2012-01-05 42 views
1

我在页面上有3个按钮。 每个人通过点击它发出AJAX请求。针对特定情况同步AJAX

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

OR

  1. 什么也不做。

优选选项#1。

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

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

感谢

回答

1

我不认为延缓对象会做你想做的。它们的设计更多用于承诺和聚合回调。您可以通过保持对由$ .ajax返回的jqXHR对象的引用来查看ajax调用的状态。

var ajax; 

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

是的,我可以检查readyState,决定做什么,你是对的。 – user1016265 2012-01-05 08:11:28

1

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

+0

像上面的答案。谢谢。 – user1016265 2012-01-05 08:12:06