好的,我正在使用AJAX和一些本地存储等创建一个完整的Web应用程序。
我遇到的问题有时是双击,或者快速来回点击标签,调用$ .post。
问题在于回调被触发时,它们被回叫并继续覆盖彼此,直到最后一次呼叫回来。
显然这是一个问题。我需要做的是取消当前的POST调用,然后获取最后一个回调。
我试过了:
// Make Call:
if(call != undefined){
call.abort();
}
var call = $.post(url,{do:'stuff'},function(response){
// callback stuff:
},'json');
保持说不定义,如果可能,我宁可使用.POST而不是.AJAX。
提前感谢您的帮助!
答案 0 :(得分:1)
只需在点击时取消绑定点击事件,然后在回调时重新绑定它。
答案 1 :(得分:1)
如果取消并未捕获所有待处理的XHR,您可以做的一件事:增加一个计数器并将其传递给后端以保持旧的响应不会破坏新的XHR。只需让你的后端在响应中包含计数器值,然后你的回调可以在覆盖之前将它与本地计数器进行比较。