我想如何防止瀏覽器在獲取先前的請求時發出新的Ajax請求! 我創建了一個系統包含一個表的數據是這樣的:防止新的請求在jQuery中獲取先前的請求
COL1 | col2 | col3 data1 |數據2 |數據3
當用戶鼠標在數據字段我已經習慣了Ajax在事件檢索有關數據鼠標的詳細信息,但如果用戶快速移動他/她的數據列多個請求的遊標已創建。我如何防止這種情況?
我想如何防止瀏覽器在獲取先前的請求時發出新的Ajax請求! 我創建了一個系統包含一個表的數據是這樣的:防止新的請求在jQuery中獲取先前的請求
COL1 | col2 | col3 data1 |數據2 |數據3
當用戶鼠標在數據字段我已經習慣了Ajax在事件檢索有關數據鼠標的詳細信息,但如果用戶快速移動他/她的數據列多個請求的遊標已創建。我如何防止這種情況?
我想你可以緩存的jQuery Ajax請求對象,然後再放棄它。
var xhr = $.ajax({...});
xhr.abort();
Ben Nadel有一個很好的模式來處理AJAX錯誤,包括檢查同一類型的多個請求。
His blog post可以幫助你。
這是好主意,但它是這麼想的解決我的解決方案:)坦克呢! – mehdi 2009-07-15 19:27:32
在你的情況,你所需要的鼠標懸停和AJAX請求之間有一個小的延遲。首先爲AJAX請求執行setTimeout。如果在此超時期間發出另一個鼠標懸停,請清除超時並設置新的超時。
下面是一個簡化版本(假設你使用相同的函數cell_onmouseover的所有元素的處理程序
var timeoutId = null; //Should be visible to both functions.
function cell_onmouseover()
{
if (timeoutId)
{
clearTimeout(timeoutId);
timeoutId = null;
}
timeoutId = setTimeout(callAJAX, 500); //half a second delay.
}
function callAJAX()
{
//dostuff
}
[編輯]:您還可以增強這中止正在進行的AJAX調用,當用戶鼠標懸停在一個新的元素。
的目標是防止,不要放棄。 – montrealist 2009-07-15 18:29:07