【问题标题】:jquery ajax async false causes click event issuejquery ajax async false 导致点击事件问题
【发布时间】:2010-11-05 04:20:33
【问题描述】:

我有一个脚本,它通过一个多级数组运行,每次调用一个新的 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() 事件并能够停止这个 for 循环,但是当这个循环进行时,由于异步错误,我无法做任何事情。

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

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

想法?

【问题讨论】:

    标签: javascript jquery ajax


    【解决方案1】:

    asyncfalse 时,整个浏览器* 将被挂起。在同步 Ajax 调用期间,除了等待调用完成之外,您不能做任何事情

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

    另见:

    最后一个链接可能特别有用(如果我了解您在这里要完成的工作)。


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

    【讨论】:

    • 有没有办法通过异步调用产生同样的效果?我正在浏览并从数据库中的每个城市提取数据,并希望它按顺序显示...否则它只是在完成时随机转储...
    • @mkprogramming:是的!查看我刚刚所做的编辑(最后一个链接)。
    【解决方案2】:

    为什么要对服务器进行如此多的调用?这对我来说似乎非常低效。

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

    【讨论】:

      猜你喜欢
      • 2015-04-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多