我在表单提交时调用my_function
。该函数在文本文件中查找用户在my_input
中输入的数字。如果此号码不存在,则该功能会弹出警报并应停止表单提交。
我的问题:显示警报,但是当我关闭它时,表单会被提交。我的问题与此主题相似:How do I return the response from an asynchronous call?
其中一个解决方案是在普通的javascript中进行GET。有人可以帮忙吗?这对我来说太先进了。
function my_function() {
$.get("http://www.example.com/file.txt", function(contents) {
var my_number = document.getElementById("my_input").value;
var hasString = contents.includes(my_number);
});
console.log(hasString); // **ALWAYS RETURNS UNDEFINED**
if (hasString == false) {
alert('Number does not exist in text file!');
return false;
}
}
答案 0 :(得分:0)
hasString
是作为第二个参数提供给$.get
的回调函数的局部变量。这就是为什么它在所述函数之外是未定义的。注意只是将变量声明移动到外部作用域将无法解决问题,因为回调函数将在检查hasString == false
之后执行(它将在get请求完成时执行)。
更直接地回答您的问题:同步执行get请求(并在您需要使用它的范围内正确声明变量)或重构代码以仅在回调内使用get请求检索的信息。请阅读the post @abc123 mentions以获取更多信息。