我有一段jQuery代码,可以getJSON()
快速连续调用几个调用:
var table = $("table#output"); for (var i in items) { var thisItem = items[i]; $.getJSON("myService", { "itemID": thisItem }, function(json) { var str = ""; str += " "; table.append(str); }); }" + thisItem + " "; str += "" + json.someMember + " "; str += "
当我针对滞后服务器运行时,表会填充预期json.someMember
值(它们按顺序到达:我不介意),但是thisItem
列中填充了来自各种迭代的不可预测的值混合.
我假设这与范围和时间有关 - 回调函数是thisItem
从更广泛的范围读取?我对吗?我该如何防止这种情况?
我目前的解决方法是让JSON服务返回其输入的副本 - 至少可以说是不满意的.
由于循环,似乎是一个范围问题.试试这个:
var table = $("table#output"); for (var i in items) { var thisItem = items[i]; $.getJSON("myService", { "itemID": thisItem }, (function(thisItem) { return function(json) { var str = ""; str += " "; table.append(str); } })(thisItem)); }" + thisItem + " "; str += "" + json.someMember + " "; str += "
编辑:我所做的只是范围thisItem
的$.getJSON
回调.