繁体   English   中英

从Jquery JSON请求推送到Javascript数组

[英]Pushing to Javascript Array from Jquery JSON request

为什么这段代码总是返回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中,它将输出正确数量的元素。

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

基本上,这是尝试做的是使用数据结果填充possibleMatches数组。

谢谢!

异步。 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代表“异步”

$.getJSON执行异步调用,其回调在完成使用的xmlhttprequest时执行:

var possibleMatches = new Array(); 
$.getJSON('getInformation.php', function(data) {  // <-- this will run later 
    $.each(data, function(i){ 
        possibleMatches.push(data[i]); 
    }) 
}); 
alert(possibleMatches.length);  // this will call immediately

jetJSON请求是异步的,它在警报运行后完成。 如果你想要一个accruate警报,它应该在你的getJSON回调中,如下所示:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM