2009-12-17 99 views
4

是否可以殺死以前的ajax請求?殺死JQuery AJAX重疊請求

我們有非常接近的表格數據。在每個數據的鼠標懸停事件上,我們使用JQuery Ajax對象向我們的服務器發出請求並在彈出窗口中顯示。

但是,我們經常將鼠標移動到其他表格內容之前,在彈出窗口中顯示之前的Ajax響應之前,正在顯示針對該表格內容的確切響應。

我需要在生成新的Ajax請求時,先前的請求/響應應該被終止,以便彈出窗口中始終可用的最新響應。

我正在使用JQuery,PHP和Mysql來服務請求。

+0

請參閱http://stackoverflow.com/questions/446594/kill-ajax-requests-using-javascript-using-jquery – 2009-12-17 08:49:27

+0

另外 rfadams 2009-12-17 08:55:08

回答

5

您可以創建一個自定義的Javascript同步對象,這個對象可以被後續的ajax調用的函數共享嗎? 將一個順序生成的id作爲參數分配給進入的請求調用。在響應中包含相同的id。在發射每個請求時,分配一個新的ID,增加1或任何邏輯。如果響應中的當前ID與共享對象中的ID不同,忽略響應,否則呈現響應。

這將乾淨地解決競爭條件。我不確定自己是否有辦法過早地殺死請求,但至少不會產生您現在面臨的渲染問題。

0

另一個選擇是在第一個完成之前不要發起另一個請求。

0

是的,沒有。這就是Ajax的重點。能夠異步執行某些操作。你想要做的是放棄一個破壞異步思想的請求。也許你可以做的是,如果你發送另一個請求,在某個地方設置一個值,指出請求的數量,然後在你的請求的回調中,檢查請求的數量是否大於1,如果是的話忽略響應。