2009-07-15 73 views
3

我想如何防止瀏覽器在獲取先前的請求時發出新的Ajax請求! 我創建了一個系統包含一個表的數據是這樣的:防止新的請求在jQuery中獲取先前的請求

COL1 | col2 | col3 data1 |數據2 |數據3

當用戶鼠標在數據字段我已經習慣了Ajax在事件檢索有關數據鼠標的詳細信息,但如果用戶快速移動他/她的數據列多個請求的遊標已創建。我如何防止這種情況?

回答

2

我想你可以緩存的jQuery Ajax請求對象,然後再放棄它。

var xhr = $.ajax({...}); 

xhr.abort(); 
+0

的目標是防止,不要放棄。 – montrealist 2009-07-15 18:29:07

1

Ben Nadel有一個很好的模式來處理AJAX錯誤,包括檢查同一類型的多個請求。

His blog post可以幫助你。

+0

這是好主意,但它是這麼想的解決我的解決方案:)坦克呢! – mehdi 2009-07-15 19:27:32

0

在你的情況,你所需要的鼠標懸停和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調用,當用戶鼠標懸停在一個新的元素。