我有一个运行在多级数组中的脚本,每次调用一个新的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()但这似乎不起作用......
想法?
答案 0 :(得分:1)
当async
为false
时,整个浏览器* 将被挂起。除了等待完成调用之外,您在同步Ajax调用期间无法执行任何操作。
如果您希望能够停止循环,则必须使用异步调用。
另见:
最后一个链接特别有用(如果我理解你在这里想要完成的事情)。
*除非你在Chrome中(那它只是当前页面)
答案 1 :(得分:0)
为什么要多次拨打服务器?这对我来说似乎效率很低。
您是否有理由无法更改要呼叫的服务以接收物品清单并将其退回?它将涉及一个Ajax调用,服务器端代码可以确保按顺序处理数据。