我在使用AJAX和FOR循环时遇到问题。在PHP文件中有一些如果数字(1-9)的负责人返回带有价格的回声。
f.ex。
1 -> echo "15.20";
2 -> echo "11.10";
3 -> echo "13.65";
4 -> echo "14.30";
JS脚本:
for(i=1; i<10; i++)
{
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
document.getElementsByClassName("courierprice")[i-1].innerHTML = xmlhttp.responseText;
}
else
{
document.getElementsByClassName("courierprice")[i-1].innerHTML = "shit";
}
}
xmlhttp.open("GET", "gethint.php?q=" + i , true);
xmlhttp.send();
}
当没有循环,只有var i = 1时,它会正确返回(15.20),但是如果我想要做几次,我只是进入所有类“shit”。
如果您有任何建议,请告诉我。谢谢!
答案 0 :(得分:2)
你应该将整个循环内容包装在一个函数中并将i传递给那里。
for(i=1; i<10; i++) {
(function (i) {
...your async code...
})(i);
}