好吧有两种方法可以。一个来自演示方面,另一个来自“处理”方面。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