是否可以殺死以前的ajax請求?殺死JQuery AJAX重疊請求
我們有非常接近的表格數據。在每個數據的鼠標懸停事件上,我們使用JQuery Ajax對象向我們的服務器發出請求並在彈出窗口中顯示。
但是,我們經常將鼠標移動到其他表格內容之前,在彈出窗口中顯示之前的Ajax響應之前,正在顯示針對該表格內容的確切響應。
我需要在生成新的Ajax請求時,先前的請求/響應應該被終止,以便彈出窗口中始終可用的最新響應。
我正在使用JQuery,PHP和Mysql來服務請求。
是否可以殺死以前的ajax請求?殺死JQuery AJAX重疊請求
我們有非常接近的表格數據。在每個數據的鼠標懸停事件上,我們使用JQuery Ajax對象向我們的服務器發出請求並在彈出窗口中顯示。
但是,我們經常將鼠標移動到其他表格內容之前,在彈出窗口中顯示之前的Ajax響應之前,正在顯示針對該表格內容的確切響應。
我需要在生成新的Ajax請求時,先前的請求/響應應該被終止,以便彈出窗口中始終可用的最新響應。
我正在使用JQuery,PHP和Mysql來服務請求。
您可以創建一個自定義的Javascript同步對象,這個對象可以被後續的ajax調用的函數共享嗎? 將一個順序生成的id作爲參數分配給進入的請求調用。在響應中包含相同的id。在發射每個請求時,分配一個新的ID,增加1或任何邏輯。如果響應中的當前ID與共享對象中的ID不同,忽略響應,否則呈現響應。
這將乾淨地解決競爭條件。我不確定自己是否有辦法過早地殺死請求,但至少不會產生您現在面臨的渲染問題。
另一個選擇是在第一個完成之前不要發起另一個請求。
是的,沒有。這就是Ajax的重點。能夠異步執行某些操作。你想要做的是放棄一個破壞異步思想的請求。也許你可以做的是,如果你發送另一個請求,在某個地方設置一個值,指出請求的數量,然後在你的請求的回調中,檢查請求的數量是否大於1,如果是的話忽略響應。
檢查這個AJAX Manager plugin。 XmlHttpRequest有abort()函數,但jQuery沒有包裝它。
請參閱http://stackoverflow.com/questions/446594/kill-ajax-requests-using-javascript-using-jquery – 2009-12-17 08:49:27
另外 –
rfadams
2009-12-17 08:55:08