Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在发送下一个ajax请求之前中止ajax请求?(jQuery)_Jquery_Ajax_Xmlhttprequest - Fatal编程技术网

在发送下一个ajax请求之前中止ajax请求?(jQuery)

在发送下一个ajax请求之前中止ajax请求?(jQuery),jquery,ajax,xmlhttprequest,Jquery,Ajax,Xmlhttprequest,我在我们的内部系统中有一份报告,可以返回从1天到整整一年的数据。因此,报告可能需要0.5秒或超过45秒才能生成所有内容 报告允许您修改一组过滤器,所有这些过滤器在修改后都会非常简单地发出ajax请求: var ax = $.ajax({ type: "GET", url: "/blah", data: values, success: function(data) { .. } }); 现在,当我们出色的用户说“哦,等等!

我在我们的内部系统中有一份报告,可以返回从1天到整整一年的数据。因此,报告可能需要0.5秒或超过45秒才能生成所有内容

报告允许您修改一组过滤器,所有这些过滤器在修改后都会非常简单地发出ajax请求:

var ax = $.ajax({
    type: "GET",
    url: "/blah",
    data: values,
    success: function(data) { .. }
});
现在,当我们出色的用户说“哦,等等!我希望这是从二月开始的,而不是一月!”。但是,自1月份以来,一个请求已经发生了,因为数据太多了!因此,用户将日期选项切换到二月,我可以看到Javascript控制台发送第二个请求。现在我们有两个人在比赛

/报告/?开始日期=1月(仍在加载…)

/报告/?开始日期=二月(嘿,我现在也在这里!)

然后,通常较小的一个会更快加载,但另一个加载后,它会覆盖他们已经拥有的。。嗯:)

我尝试过使用前面提到的
ax
变量声明之后的
ax.abort()
,但它似乎不起作用

所以现在我想知道,我错过了什么?我只想在用户更改某些选项后立即终止当前请求(客户端,我知道我在服务器端对此无能为力),这样我就不会同时发出2个或更多请求。设置
async:false
不是一个选项,因为它只是将用户锁定在外


提前感谢您的帮助。

您可以查看插件。

您可以查看插件。

我认为尝试中止以前的请求不是一个好的解决方案。也许您应该使用简单的变通方法——对于每个ajax请求,使用javascript增加计数器,并将其传递给ajax回调。发生回调时,检查响应的计数器是否与当前计数器值相同。如果没有,则忽略响应-它是由过时的单击事件触发的。

我认为尝试中止以前的请求不是一个好的解决方案。也许您应该使用简单的变通方法——对于每个ajax请求,使用javascript增加计数器,并将其传递给ajax回调。发生回调时,检查响应的计数器是否与当前计数器值相同。如果没有,则忽略响应-它是由过时的单击事件触发的。

Heh,这是一个不错的解决方案。非常简单,但很好奇它在应用程序中是如何工作的。明天就得试试,这是个不错的解决办法。非常简单,但很好奇它在应用程序中是如何工作的。我明天得试试