为什么此代码总是返回0?

     var possibleMatches = new Array();
  $.getJSON('getInformation.php', function(data) {
   $.each(data, function(i){
    possibleMatches.push(data[i]);
   })
  });
  alert(possibleMatches.length);

尽管我可以移动或添加“alert(possibleMatches.length);”在$ .each里面,它将输出正确数量的元素。

我只是好奇为什么它的值没有按我预期的那样进入数组。我确定这是局部变量还是全局变量的问题,只是不确定原因。

基本上,这是要尝试用数据结果填充满可能的数组。

谢谢!

最佳答案

异步性。 alert(possibleMatches.length);行在$.getJSON()的成功回调执行之前执行。

因此,要准确地获取警报报告,只需移动它即可。

var possibleMatches = new Array();
$.getJSON('getInformation.php', function(data) {
  $.each(data, function(i){
    possibleMatches.push(data[i]);
  })

  // To here
  alert(possibleMatches.length);
});
// From here

请记住,AJAX中的第一个 A 代表“异步”

09-26 05:03