2009-12-17 102 views
4

是否可以杀死以前的ajax请求?杀死JQuery AJAX重叠请求

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

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

我需要在生成新的Ajax请求时,先前的请求/响应应该被终止,以便弹出窗口中始终可用的最新响应。

我正在使用JQuery,PHP和Mysql来服务请求。

+0

请参阅http://stackoverflow.com/questions/446594/kill-ajax-requests-using-javascript-using-jquery – 2009-12-17 08:49:27

+0

另外 rfadams 2009-12-17 08:55:08

回答

5

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

这将干净地解决竞争条件。我不确定自己是否有办法过早地杀死请求,但至少不会产生您现在面临的渲染问题。

0

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

0

是的,没有。这就是Ajax的重点。能够异步执行某些操作。你想要做的是放弃一个破坏异步思想的请求。也许你可以做的是,如果你发送另一个请求,在某个地方设置一个值,指出请求的数量,然后在你的请求的回调中,检查请求的数量是否大于1,如果是的话忽略响应。