【发布时间】:2010-10-01 11:42:27
【问题描述】:
我有一段 jQuery 代码可以快速连续调用多个 getJSON():
var table = $("table#output");
for (var i in items) {
var thisItem = items[i];
$.getJSON("myService", { "itemID": thisItem }, function(json) {
var str = "<tr>";
str += "<td>" + thisItem + "</td>";
str += "<td>" + json.someMember + "</td>";
str += "</tr>";
table.append(str);
});
}
当我在一台滞后的服务器上运行此程序时,该表会填充预期的 json.someMember 值(它们无序到达:我不介意),但 thisItem 列填充了不可预知的混合物来自各种迭代的值。
我假设这与范围和时间有关 - 回调函数正在从更广泛的范围读取 thisItem?我对吗?如何防止这种情况发生?
我目前的解决方法是让 JSON 服务返回其输入的副本 - 至少可以说是不令人满意的。
【问题讨论】:
-
感谢 Slim 提出这个问题。我也遇到了一些问题(我知道异步函数返回,但不知道如何用信号通知 getJSON 回调在什么位置放置返回值)。
标签: javascript jquery ajax json timing