我想如何防止浏览器在获取先前的请求时发出新的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