jQuery - 取消$ .post以防止排队

时间:2011-11-12 06:30:27

标签: javascript ajax jquery event-handling

好的,我正在使用AJAX和一些本地存储等创建一个完整的Web应用程序。

我遇到的问题有时是双击,或者快速来回点击标签,调用$ .post。

问题在于回调被触发时,它们被回叫并继续覆盖彼此,直到最后一次呼叫回来。

显然这是一个问题。我需要做的是取消当前的POST调用,然后获取最后一个回调。

我试过了:

// Make Call:

if(call != undefined){
    call.abort();
}
var call = $.post(url,{do:'stuff'},function(response){
     // callback stuff:
},'json');

保持说不定义,如果可能,我宁可使用.POST而不是.AJAX。

提前感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

只需在点击时取消绑定点击事件,然后在回调时重新绑定它。

答案 1 :(得分:1)

如果取消并未捕获所有待处理的XHR,您可以做的一件事:增加一个计数器并将其传递给后端以保持旧的响应不会破坏新的XHR。只需让你的后端在响应中包含计数器值,然后你的回调可以在覆盖之前将它与本地计数器进行比较。