![](/img/trans.png)
[英]Pushing objects into an array in Javascript after extracting from JSON response
[英]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.