jquery ajax()async false

don*_*ame 13 ajax jquery asynchronous

我有问题..

for(a=1;a<10;a++){
    $(".div").append("<div id="+a+"></div>")
        $.ajax({
              url: "file.php",
              data: "a="+a,
              type: "POST",
              async: false,
              success: function(data) {
                $("#"+a).html(data);
              }
        });

}
 $("div").click(function(){
        alert("it works");
 });
Run Code Online (Sandbox Code Playgroud)

问题是:是我没有把有async: false从数据file.php仅在最后一个div所以id为9,但现在有async: false-所以数据在每一个div中是好的

但是,如果我想通过ajax加载时点击它不起作用(仅在完成所有ajax-es之后)

怎么解决这个问题?(也许错误的是我使用的是ajax.我可以使用getJSON等...)

谢谢你的帮助

Jos*_*ein 26

如果您希望用户能够在ajax调用运行时使用该界面,则应将您更改asynctrue.James Allardice也注意到,在这种情况下,您需要使用javascript闭包来保留原始值,id以便在返回ajax调用时使用.有关javascript闭包的更多信息,请查看how-do-javascript-closures-work,这是一个在stackoverflow上找到的非常好的问题.

for(id = 1; id < 10; id++){
    $(".div").append("<div id='" + id + "'></div>");

    (function(id) {
        $.ajax({
            url: "file.php",
            data: "a=" + id,
            type: "POST",
            async: true,
            success: function(data) {
                $("#"+ id).html(data);
            }
        });
     }(id));
}
Run Code Online (Sandbox Code Playgroud)

  • 您需要在闭包中包装`ajax`调用,以在每次迭代时捕获`a`的值. (2认同)