首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jQuery Ajax SyncLock

jQuery Ajax SyncLock
EN

Stack Overflow用户
提问于 2010-01-28 09:14:15
回答 2查看 1.3K关注 0票数 2

我有几个按钮,用户可以单击它们来使用jQuery的$.ajax加载内容。所有按钮都将内容加载到相同的div标记中。问题是,如果用户快速点击多次,内容可能会闪烁几次,然后才会落到正确的内容上。

对于此问题,我有什么解决方法?我在想一些类似于.Net的SyncLock特性的东西,但用的是javascript/jQuery。理想的解决方案是取消当前队列中的请求,然后启动新的请求。

需要注意的一件事是,可能有多个不相关的ajax请求正在进行,所以我不能清除所有请求,只清除与这一个div标记相关的请求。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-01-28 09:18:25

清除/取消请求是一项昂贵的任务,所以除非你真的需要它,否则就不要去做。它也不会停止服务器端的执行,只需关闭httprequest即可。

你应该做的是设置一个“锁”,并相应地锁定和解锁它。类似于:

代码语言:javascript
复制
var working = false;

function startAjax() {
    working = true;
    // do ajax and wait for callback()
}

function callback() {
    working = false;
}

在按钮.click()中,确保在实际执行之前检查是否工作:

代码语言:javascript
复制
$("#thebutton1, #thebutton2").click(function() {
    if(working) {
        alert("Im in the middle of something");
    } else {
        // execute...
    }
});
票数 6
EN

Stack Overflow用户

发布于 2010-01-28 09:19:33

您可以做的是让所有向同一div发送输出的按钮的click事件禁用该按钮。然后在AJAX回调中,一旦处理了响应,就可以重新启用它们。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2151638

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档