2012-01-05 38 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