页面上有3个按钮。 每个人都通过点击它来发出AJAX请求。
这些所有请求都应该以异步模式进行。 但是第二次点击任何按钮应该: 1.停止当前点击此按钮的当前请求。
OR
首选选项#1。
我知道abort(),但我的问题 - 如何检测Ajax请求(来自某个按钮)仍未完成?这里的要点是 - 来自某个按钮的请求。我不想停止所有的ajax请求。我想要第一次点击同一个按钮时只停止请求。
在我的项目中,我正在使用jQuery 这http://api.jquery.com/category/deferred-object/可以帮助我吗?如果是,你可以提供任何合适的例子吗?
由于
答案 0 :(得分:1)
您需要有一个与每个可能的ajax进程相关联的变量,该进程跟踪该进程当前是否正在运行。当ajax调用开始时,设置该变量以指示它正在运行。当该ajax调用完成时,设置该变量以指示该进程已停止。然后,当用户单击该按钮时,您可以检查该变量以决定是否需要中止()ajax调用。
答案 1 :(得分:1)
我不相信延迟对象会做你想要的。他们为承诺和汇总回调设计了更多。您可以通过保留对$ .ajax返回的jqXHR对象的引用来查看ajax调用的状态。
var ajax;
function onClick() {
if (!ajax || ajax.state() === "resolved") {
ajax = $.ajax(url);
}
}