杀死JQuery AJAX重叠请求

时间:2009-12-17 08:47:18

标签: javascript jquery xmlhttprequest

是否有可能杀死以前的ajax请求?

我们的表格数据彼此非常相邻。在每个数据的鼠标悬停事件中,我们使用JQuery Ajax对象向我们的服务器发出请求并在弹出窗口中显示。

但是,我们经常将鼠标移动到其他表格内容之前,之前的Ajax响应会在弹出窗口中显示,之后会显示精确的响应,这是针对该表格内容的。

我需要在生成新的Ajax请求时,之前的请求/响应应该被终止,以便弹出窗口内始终可以获得预期的最新响应。

我正在使用JQuery,PHP和Mysql来处理请求。

4 个答案:

答案 0 :(得分:5)

您是否可以创建一个自定义Javascript Sync对象,该对象将由后续ajax调用的函数共享? 将顺序生成的id作为参数分配给进入的请求调用。在响应中包含相同的id。在触发每个请求时,分配一个新的id,递增1或任何逻辑。如果响应中的当前id与共享对象中的id不同;忽略响应,否则呈现响应。

这将彻底解决竞争条件。我不确定自己是否有办法提前终止请求,但至少不会造成你现在面临的渲染问题。

答案 1 :(得分:0)

另一个选择是在第一个请求完成之前不会发起另一个请求。

答案 2 :(得分:0)

是和否。这就是Ajax的重点。能够异步做某事。你想要做的是中止一个破坏异步想法的请求。也许你可以做的是,如果你发送另一个请求,在某个地方设置一个指示请求数量的值,然后在你的请求的回调中,检查请求的数量是否大于1,如果是,则忽略响应。

答案 3 :(得分:0)

检查AJAX Manager plugin。 XmlHttpRequest有一个abort()函数,但是jQuery没有它的包装。