【发布时间】:2009-12-08 14:24:35
【问题描述】:
我有一个简单的 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;
}
我认为这是一个范围界定问题,但我似乎无法弄清楚。在其他语言中,创建新对象意味着它存在于堆中并在范围内存活,但在这里它似乎消失在以太中。
如何返回一个数组并将其推送到我自己的数组中以供以后使用(甚至在另一个函数中)?
【问题讨论】:
标签: javascript jquery ajax arrays