我正在运行代码
<div id="#1gr1">Kun</div>
for(var i=1;i<=10;i++){
$.ajax({
type: "POST",
url: "get_url.php",
async: false,
data: {a: 'hi'}
}).done(function(msg) {
// getting msg[1]='Good';
if (msg !== '') {
$('#1gr' + i).html(msg[1]);
}
msg='';
});
}
暂时将#1gr1 的html更改为&#34; Good&#34;
<div id="#1gr1">Good</div>
但在下次通话时i = 2;它正在将#1gr1 的文字改为&#34; KUN&#34; 。 这次改变了#1gr2
的html <div id="#1gr1">Kun</div>
<div id="#1gr2">Good</div>
主要问题:为什么div的文本会自动更改回原始文本,i的值正是我想要的。
任何猜猜......?
答案 0 :(得分:2)
只需清除您的代码即可从ID dom中删除#
<div id="#1gr1">Kun</div>
到
<div id="1gr1">Kun</div>
答案 1 :(得分:0)
您似乎无法正确理解AJAX - 异步 Javascript和XML。
因此,在您的代码中,for循环正常执行。
但.done()
仅在ajax请求完成后才会被调用。
此外,在$.ajax
让我们看看下面的例子:
$.ajax({
url:'/some/resource.xml'
});
$.ajax({
url:'/some/json'
});
在上述情况下,您无法保证resource.xml
将首先完成。
此外,您无法保证json
永远是第二位。
在每种情况下,无论哪种反应快速且轻量级,都将成为赢家。
因此,总而言之,循环不会以意外行为运行。
此外,您正在使用以#
开头的ID,这会混淆jquery。