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

标签 javascript jquery ajax arrays

我有一个简单的 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/

相关文章:

javascript - 通过 url 将 id 传递给模态并更新表

Javascript firebase.database().ref.on(...) 返回 null

javascript - 检查具有相同名称属性的元素是否存在 jQuery

javascript - 如何使用 requireJS 调用多个函数

jquery - 将 jQuery 每个函数转换为 Prototype.js

javascript - 如何使用 Ajax 发布到 Rails?

javascript - 如何防止其他表格元素在向某些TD添加新内容时不改变其位置

javascript - 无法在 Promise 回调中写入 socketio?

javascript - 如何使用javascript刷新弹出窗口

javascript - 带有 Ruby on Rails 的 Ajax 简单 View 刷新