我有一个简单的 AJAX 函数,它使用 jQuery 从数据库返回一个包含 300 个测试对象的数组。我可以看到数据已返回,我可以使用 FireBug 单步执行第一个循环并进入构造函数。
此数据被复制到 JS 数组。代码片段如下所示:
//retrieve star locations to display on page
$.getJSON("stars.php?jsoncallback=?", function(data) {
for (var x=0, xx=data.length; x<xx; x++) {
// planetArray[x] = new Planet(data[x].xpos, data[x].ypos); // also doesn't work.
planetArray.push(new Planet(data[x].xpos, data[x].ypos));
}
});
for (var i=0, ii=planetArray.length; i<ii; i++) {
// display the data.
}
FireBug 说 planetArray.length
为零。 Planet
构造函数如下所示:
function Planet(x, y) {
this.x = x;
this.y = y;
}
我认为这是一个范围界定问题,但我似乎无法弄清楚。在其他语言中,创建一个新对象意味着它存在于堆中并在范围内存活,但在这里它似乎消失在以太中。
我怎样才能返回一个数组并将其放入我自己的数组中供以后使用(甚至在另一个函数中使用)?
最佳答案
AJAX 请求异步发生 - 您无需等待它完成就可以尝试显示数据。
将显示代码移到回调中,它应该可以工作。
关于javascript - 返回的 AJAX 数组未被复制到数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1867284/