jQuery .get()函数仅适用于调试器模式

时间:2016-12-29 19:34:48

标签: jquery ajax debugging

我正在尝试从http://numbersapi.com/random/获取数据,这将为您提供纯文本响应,并将其保存到变量供以后使用。这是我的javascript代码:

var myFunction = function() {
    var dataCopy = "not successful";
    $.get('http://numbersapi.com/random/', function(data) {
        dataCopy = data;
    });

    console.log(dataCopy);
}

其中myFunction()由按钮激活。

dataCopy在控制台中记录为“not successful”,而不是每次都来自API的数据。奇怪的是,如果我将调试器语句作为myFunction()的第一行,使用我的浏览器的调试器,并非常缓慢地跨越行,那么myFunction()将按预期工作。快速踩过线会导致前面提到的错误。

有人可以向我解释为什么会发生这种情况以及如何解决这个问题?我是从API获取信息的新手(我刚刚听说过它们),我从互联网拼凑的信息中找出了这些代码。

2 个答案:

答案 0 :(得分:1)

$。get 方法是异步的,因此您可以像以下一样使用then

CREATE TABLE user_data ( 
id INT(10) UNSIGNED AUTO_INCREMENT PRIMARY KEY NOT NULL,
firstName VARCHAR(255) NOT NULL, 
lastName VARCHAR(255) NOT NULL, 
postcode VARCHAR(255) NOT NULL, 
telephoneNumber VARCHAR(255) NOT NULL, 
emailAddress VARCHAR(255) NOT NULL, 
dateTime TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP );
var myFunction = function() {
  var dataCopy = "not successful";
  $.get('http://numbersapi.com/random/', function(data) {
    dataCopy = data;
  }).then(function() {  // wait for get and then do your stuff
    console.log(dataCopy);
  });

}
myFunction();

答案 1 :(得分:0)

您在get调用返回之前登录dataCopy。在调试模式下,get的事件特技演员的性质可能不同。

如果要在通话后记录值,请将控制台日志调用移至匿名函数。