서버에서 일부 아약스 (이 비트가 작동 함)를 읽는 코드 조각이 있습니다.배열 길이가 0인데도 '객체'를 밀어 넣습니다.
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());
}
}
datapair와 JSON이로드되지만, 배열로 푸시 될 때 작동하지 않는 것 같습니다. netbeans는 serverItems 만 사용하면 변수의 범위가 좋았음을 보여 주었기 때문에 self.serverItems 및 just serverItems로 시도했지만 왜 작동하지 않는지 혼란 스럽습니다. 누구든지 나를 도울 수 있습니까?
오류가있는 곳에 의견을 달았습니다. DOM 트리의 브라우저에서 디버깅 할 때 serverItems 배열 안에 모든 데이터가 포함되어 있어도 serverItems.length는 0입니다.
아마도이 serverItems는 다른 범위에 있고 길이를 가져오고 싶을 때 호출하지 않습니다.
체크 .. – iJade
없음 오류, 모든 작품이 코드를 추가 예상대로 배열은 항상 0입니다. – Limnic
@icke 대답은 거기에 있습니다, 감사합니다 :) – Limnic