gpt4 book ai didi

javascript - 即使我将 'objects' 插入数组,数组长度仍为 0

转载 作者:行者123 更新时间:2023-11-28 15:38:47 25 4
gpt4 key购买 nike

我有一小段代码可以从服务器读取一些ajax(这部分有效)。

var self = this;
var serverItems = new Array();
var playersOnlineElement = $("#playersOnline");

function DataPair(k, v) {
this.key = k;
console.log("new datapair: " + k + ", " + v);
this.value = v;
}

DataPair.prototype.getKey = function() {
return this.key;
}

DataPair.prototype.getValue = function() {
return this.value;
}

$.getJSON("http://127.0.0.1", function(data) {
$.each(data, function(key, val) {
var pair = new DataPair(key, val);
self.serverItems.push(pair);
});
});

console.log(serverItems.length); //Problem is here
for (var i = 0; i < serverItems.length; i = i + 1) {
var dpair = serverItems[i];
if (dpair.getKey() === "playersOnline") {
self.playersOnlineElement.text("Players Online: " + dpair.getValue());
}
}

数据对和 JSON 已加载,但当它们被推送到数组时,它似乎不起作用。我尝试使用 self.serverItems 和 serverItems,因为 netbeans 向我展示了如果我只使用 serverItems 的话变量的范围是好的,但我有点困惑为什么这不起作用。谁能帮我吗?

我在错误所在的地方添加了注释。 serverItems.length 为 0,即使在 DOM 树中的浏览器中调试时,它有一个包含所有数据的数组 serverItems。

假设这个 serverItems 位于另一个范围内,而不是我想要获取长度时调用的范围?

最佳答案

将此代码添加到成功部分,因为它是异步的...

for (var i = 0; i < serverItems.length; i = i + 1) {
var dpair = serverItems[i];
if (dpair.getKey() === "playersOnline") {
self.playersOnlineElement.text("Players Online: " + dpair.getValue());
}

到...

$.getJSON("http://127.0.0.1", function(data) {
$.each(data, function(key, val) {
var pair = new DataPair(key, val);
self.serverItems.push(pair);

for (var i = 0; i < serverItems.length; i = i + 1) {
var dpair = serverItems[i];
if (dpair.getKey() === "playersOnline") {
self.playersOnlineElement.text("Players Online: " + dpair.getValue());
}
});
});

关于javascript - 即使我将 'objects' 插入数组,数组长度仍为 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24652134/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com