针对特定情况同步AJAX

时间:2012-01-05 06:33:12

标签: javascript jquery ajax

页面上有3个按钮。 每个人都通过点击它来发出AJAX请求。

这些所有请求都应该以异步模式进行。 但是第二次点击任何按钮应该: 1.停止当前点击此按钮的当前请求。

OR

  1. 什么都不做。
  2. 首选选项#1。

    我知道abort(),但我的问题 - 如何检测Ajax请求(来自某个按钮)仍未完成?这里的要点是 - 来自某个按钮的请求。我不想停止所有的ajax请求。我想要第一次点击同一个按钮时只停止请求。

    在我的项目中,我正在使用jQuery 这http://api.jquery.com/category/deferred-object/可以帮助我吗?如果是,你可以提供任何合适的例子吗?

    由于

2 个答案:

答案 0 :(得分:1)

您需要有一个与每个可能的ajax进程相关联的变量,该进程跟踪该进程当前是否正在运行。当ajax调用开始时,设置该变量以指示它正在运行。当该ajax调用完成时,设置该变量以指示该进程已停止。然后,当用户单击该按钮时,您可以检查该变量以决定是否需要中止()ajax调用。

答案 1 :(得分:1)

我不相信延迟对象会做你想要的。他们为承诺和汇总回调设计了更多。您可以通过保留对$ .ajax返回的jqXHR对象的引用来查看ajax调用的状态。

var ajax;

function onClick() {
    if (!ajax || ajax.state() === "resolved") {
        ajax = $.ajax(url);
    }
}