Jquery GET in plain javascript

时间:2016-10-12 16:40:15

标签: javascript jquery ajax

我在表单提交时调用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;
  }
}

1 个答案:

答案 0 :(得分:0)

hasString是作为第二个参数提供给$.get的回调函数的局部变量。这就是为什么它在所述函数之外是未定义的。注意只是将变量声明移动到外部作用域将无法解决问题,因为回调函数将在检查hasString == false之后执行(它将在get请求完成时执行)。

更直接地回答您的问题:同步执行get请求(并在您需要使用它的范围内正确声明变量)或重构代码以仅在回调内使用get请求检索的信息。请阅读the post @abc123 mentions以获取更多信息。