Jquery 将Ajax请求结果存储到Javascript变量中

Jquery 将Ajax请求结果存储到Javascript变量中,jquery,Jquery,我试图将返回的ajax调用的结果存储为:var yValue,这在javascript中是可用的,但是返回yValue的结果总是0 <head> $.ajax({ url: 'test2.php', success: function(data) { var yValue= data; // data contains value 1; } }); alert (yValue); </hea

我试图将返回的ajax调用的结果存储为:var yValue,这在javascript中是可用的,但是返回yValue的结果总是0

<head>    
$.ajax({
      url: 'test2.php',
      success: function(data) {
          var yValue= data; // data contains value 1; 
      }
    }); 

    alert (yValue); 
</head>
返回的结果总是零或null,当我尝试使用警报框检查数据值时,它总是1

即使我使用数据作为结果存储到我创建的arraydynamicdata中,它也会返回0或NULL值:

var globalData = null;
$.ajax({
    url: 'test2.php',
    async: false,
    success: function(data) {
        globalData = data;
    }
});

            var j=j+1;

            var CurrentDate1 = new Date((new Date()).getTime())
            var hours=CurrentDate1.getHours()
            var minutes=CurrentDate1.getMinutes()
            var seconds=CurrentDate1.getSeconds()
            if (minutes<=9) minutes="0"+minutes;
            if (seconds<=9) seconds="0"+seconds;
            var timer=hours+":"+minutes+":"+seconds+"";


            // remove the first element
            dynamicdata.splice(0, 1);
            // add a new elemez
            dynamicdata.push([timer, globalData]);
有人能帮忙吗

我试图存储返回的结果

不要试图反对AJAX的异步特性&这是首字母缩写的第一个字母的意思。这是一场你将输掉的战斗。如果您想使用AJAX,您应该停止按顺序思考和编写代码。您应该使用事件。您订阅诸如AJAX调用的成功回调之类的事件,并且只在这些事件中使用结果

因此,在您的情况下,不要尝试将结果存储在变量中,只需在回调中使用这些结果:

$.ajax({
    url: 'test2.php',
    success: function(data) {
        // Here and only here you can hope to reliably use the results
        // of an AJAX call
        alert(data);
    }
});
为了答案的完整性,而不是像您应该做的那样,您可以将async标志设置为false:

但是请注意,通过这样做,您不再使用AJAX。调用不是异步的。这是一个标准的同步调用,将在处理过程中阻止用户浏览器。这完全违背了AJAX的全部目的。不要这样做。

您可以将ascync:false添加到ajax调用中:

var yValue;

$.ajax({
  url: 'test2.php',
  success: function(data) {
      yValue = data; // data contains value 1; 
  },
  async: false
}); 

alert(yValue);
但不建议这样做。您可能还需要了解JavaScript中的异步调用,您将大量使用它。下面是一个示例,说明如果您不习惯嵌套函数,如何组织代码:

$.ajax({
  url: 'test2.php',
  success: onReady
}); 

function onReady(data) {
  // this is called when the ajax call is completed.
  alert(data);
}

欢迎来到异步的精彩世界!你不能这么做。我曾想过使用返回的结果,但当我将值推送到javascript数组中时,返回的数据不知何故是空的。他的问题有解决办法吗?@user1115461,它为空是正常的。$.ajax方法立即返回。成功回调可以在很久以后调用。解决方法是在success回调中推送值:success:functiondata{someGlobalArray.pushdata;}它似乎无法按照您的方法将数据存储到arary中。返回的数据值为1,但当您检查数组中的值时,它为null@用户1115461,它能够存储数据。只是在它被存储之前,您正在尝试读取它。那是你的问题。因此,只检查成功回调内部的值,而不是外部的值。它不会存在于它之外。异步与否。
$.ajax({
  url: 'test2.php',
  success: onReady
}); 

function onReady(data) {
  // this is called when the ajax call is completed.
  alert(data);
}