返回的AJAX数组未被复制到数组

gra*_*eds 1 javascript arrays ajax jquery

我有简单的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.
    }
Run Code Online (Sandbox Code Playgroud)

FireBug说planetArray.length是零.该Planet构造是这样的:

function Planet(x, y) {
    this.x = x;
    this.y = y;
}
Run Code Online (Sandbox Code Playgroud)

我认为这是一个范围问题,但我似乎无法弄明白.在其他语言中,创建一个新对象意味着它存在于堆上并在范围内存活,但在这里它似乎消失在以太中.

如何返回一个数组并将其推入我自己的数组中以供以后使用(甚至在另一个函数中)?

Gre*_*reg 6

AJAX请求是异步发生的 - 在尝试显示数据之前,您不是在等待它完成.

将显示代码移动到回调中它应该可以工作.