jquery ajax async false导致单击事件问题

时间:2010-11-05 04:20:33

标签: javascript jquery ajax

我有一个运行在多级数组中的脚本,每次调用一个新的ajax GET命令到一个php文件,其中部分数组作为数据。 很基本...

for(var x=0; x<cities.length; x++){
    for(var u=0; u<links.length; u++){
       $.ajax({
                    url: "dontneedtoknow.php?city=" + cities[x] + "&link=" + links[u],
                    type: 'GET',
                    async: false,
                    cache: false,
                    timeout: 30000,
                    error: function(){
                        return true;
                    },
                    success: function(data){ 
                          //just appending data to page
                    }
                });
   }
}

我希望能够拥有click()事件以及为循环停止此功能的能力,但是当这个循环开始时,由于异步错误,我无法做任何事情。

我需要async false,因为我希望在每个函数完成时附加数据。

我尝试过.live()但这似乎不起作用......

想法?

2 个答案:

答案 0 :(得分:1)

asyncfalse时,整个浏览器* 将被挂起。除了等待完成调用之外,您在同步Ajax调用期间无法执行任何操作

如果您希望能够停止循环,则必须使用异步调用。

另见:

最后一个链接特别有用(如果我理解你在这里想要完成的事情)。


*除非你在Chrome中(那它只是当前页面)

答案 1 :(得分:0)

为什么要多次拨打服务器?这对我来说似乎效率很低。

您是否有理由无法更改要呼叫的服务以接收物品清单并将其退回?它将涉及一个Ajax调用,服务器端代码可以确保按顺序处理数据。