2011-10-26 43 views
1

我不確定這是可能的。暫停當前ajax呼叫,執行一個新的,執行後,繼續默認的ajax呼叫

我在按鈕單擊事件期間執行了兩個ajax調用。 首先ajax調用是使用jquery ajax post將數據添加到數據庫。 第二個是通過jquery ajax post添加另一組數據到數據庫太

第一個將執行第一個然後第二個。我已經設置了定時器到第二個電話(windowstimeout)來創建兩個執行之間的時間間隔,以測試我是否可以暫停第一個ajax調用。

你會問我爲什麼我不想結合這兩個電話。我有理由這樣做,我想知道是否真的有可能暫停ajax調用。我在網上搜索,我發現的只是ajaxstop(jQuery),但它並沒有真正暫停,它停止了ajax調用。

所以任何人有任何想法這樣做?謝謝。

+1

爲什麼你不把第二個異步回傳放在第一個請求的成功回調中? – lsuarez

+0

不是字面上的,沒有。這是請求/響應行爲問題,而不是真正的JavaScript。 – Marc

+0

一旦呼叫發送到服務器端,它就不在客戶端手中。你不能讓服務器在中途暫停,你可以保留第一個結果,直到第二個結束,或者將第二個調用嵌套在第一個中。你可以擴展你想要做的這個暫停嗎? – JoshHetland

回答

2

爲什麼要暫停它?你不能,但你爲什麼要?讓它們都運行,或者直到第二次完成才啓動第一個呼叫。

+0

只是爲了找出是否存在技術可以做到這一點,我想不是。 – sm21guy

1

不,您不能暫停Ajax調用 - 它們只是普通HTTP請求/響應週期的實例,並且表現得如此。如果由第二次調用產生的服務器端操作依賴於第一次調用的結果,那麼爲什麼不直接鏈接調用並在第一次成功回調處理程序中觸發第二次調用?

1

你不能那樣做。

你應該真的問自己,你的數據交換協議的設計是否正確。

暫停請求(無論通信協議是什麼,AJAX或任何其他)不應該工作,因爲你不知道是否有其他請求和他們做什麼。

所以問自己的問題:我確切的需求是什麼?還有什麼其他方法可以做到這一點?