我想如何在浏览器获取上一个请求时阻止新的ajax请求! 我创建了一个包含这样的数据表的系统:
col1 | col2 | COL3 数据1 |数据2 | DATA3
当用户将鼠标悬停在数据字段上时,我使用Ajax来检索有关鼠标悬停事件数据的更多信息,但如果用户快速移动他/她的数据光标列,则会创建多个请求。我该如何防止这种情况?
答案 0 :(得分:2)
我认为您可以缓存jquery ajax请求对象,然后稍后将其中止。
var xhr = $.ajax({...});
xhr.abort();
答案 1 :(得分:1)
Ben Nadel有一个很好的处理AJAX错误的模式,包括检查相同类型的多个请求。
His blog post可能会帮助你。
答案 2 :(得分: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调用。