0

我有一个点击事件,它将一个项目异步添加到用户的购物车服务器端和客户端。这在所有浏览器中都可以正常工作,直到用户在 ajax 请求完成之前在 Chrome 中单击两次以上。在 IE 和 Firefox 的网络控制台中,我可以看到请求被正确排队,但 Chrome 一次只排队两个,而忽略了其他所有内容。即使使用成功事件也无济于事,因为即使 Chrome 忽略它也会触发。

$(div).on('click',function () {
    $.ajax('script.php')
    .success(function() {
        dosomething();
    });
});

如果您在快速分离中触发此事件 5 次,则 script.php 将被调用两次,而 dosomething() 将被调用 5 次。

有没有办法让 Chrome 处理两个以上的请求,或者至少调用某个函数的次数与加载实际 ajax 的次数一样多?

4

2 回答 2

0

http://api.jquery.com/jQuery.ajax/

根据 API 文档,它应该是异步执行的。尝试设置

async: true

应该是默认的,但也许你的脚本正在某个地方改变它? 也许您需要检查控制台是否有错误???

于 2013-11-06T21:27:58.453 回答
0

将代码更改为

$(div).on('click',function () {
    $.ajax({url: 'script.php',cache: false})
    .success(function() {
        dosomething();
    });
});

似乎奏效了。请随意告诉我为什么 Chrome 会缓存一个 ajax 请求 1 秒。

于 2013-11-06T21:55:21.863 回答