小编典典

jQuery ajax()异步false

ajax

我有问题..

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");
 });

问题是:是不是我没有把async: false来自 file.php的 数据仅放在最后一个div中,所以ID为9,但是现在有async: false-所以数据在每个div中,所以这很好

但是如果我想在通过ajax加载时单击,则无法正常工作(仅在完成所有ajax-es之后)

如何解决这个问题?(也许是错误的,因为我在使用ajax。我可以使用getJSON等。)

谢谢你的帮助


阅读 369

收藏
2020-07-26

共1个答案

小编典典

如果希望用户在ajax调用运行时能够使用该界面,则应将更async改为true。James
Allardice还指出,在这种情况下,您需要使用javascript闭包来保留id返回ajax调用时的原始值。

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));
}
2020-07-26