好吧有兩種方法可以。一個來自演示方面,另一個來自「處理」方面。Jquery - 防止來自「堆疊」的ajax請求
現在我有一個數據表設置。某些操作(輸入搜索查詢,點擊不同的頁碼,等...),觸發了一個名爲refreshData()
refreshData()
首先調用showOverlay()
功能漸漸消逝與loading.gif圖像的疊加。然後它執行$.post()
請求來獲取一些json數據。然後,如果成功,它會調用hideOverlay()
,這會淡出疊加層。
function refreshData()
{
showOverlay();
var parameters = {'page' : '1', 'per-page' : '5'};
$.post(updateUrl, parameters,
function(data){
$('#data-container table tbody').empty();
$.each(data.users, function(i, user){
$('#data-container table tbody').append('<tr>'+
'<td>'+ user.name +'</td>'+
'<td>'+ user.registered +'</td>'+
'<td>'+ user.id +'</td>'+
'<td><a href="https://stackoverflow.com/users/edit/' + user.id + '">edit</a></td>'+
'</tr>'
);
});
alternateRows();
hideOverlay();
}, "json");
}
我的第一個問題(表示)是,如果refreshData()
反覆調用,覆蓋淡入和淡出了個遍。它被堆疊起來,即使用戶沒有做任何事情,它也會淡入淡出,直到它完成了多次操作。如果最近的「請求」完成,我希望它只能淡出。
我的第二個問題(處理)可能無關緊要。我想知道是否在向DOM追加新項目之前,我應該檢查是否還有新的請求。如果沒有必要添加一些東西來刪除它們。這足夠重要嗎?如果這是我該怎麼做?
在這個例子中,JSON將被稱爲最多每秒一次,因爲在內部函數完成之前,「運行」不會設置爲false。 – Corey 2010-10-09 02:48:29