获取最新的ajax请求并中止其他人

我一直在寻找,这个问题似乎很简单,但找不到答案。 我有多个请求调用不同的URL。 但对于每个url,我只想要一次结果,它必须是被调用的同一个url中的最后一个。 我现在的问题是“如何才能获得最后一个?” 我看了这个,似乎是3岁:

http://plugins.jquery.com/project/ajaxqueue

还有其他任何方式可以干净利落地完成这项工作吗? 如果有这样的东西,它将是完美的:

queue: "getuserprofile", cancelExisting: true 

(将取消getuserprofile队列中现有的ajax)

谢谢

这解释了如何使用jQuery进行ajax调用以及如何中止它。 您需要做的就是创建一个存储每个请求的数组。 然后,您可以在添加新请求时取消之前的请求。

 ajaxRequests = new Array(); queueRequest = function(whatever, you, want) { if(ajaxRequests[ajaxRequests.length - 1]) { ajaxRequests[ajaxRequests.length - 1].abort(); } ajaxRequests[ajaxRequests.length] = //Insert New jQuery AJAX call here. } 

因为我们只想要最后一个请求的结果,所以这很简单并且有效。

 var ajax = null; var getFoo = function() { if(ajax) ajax.abort(); ajax= $.ajax({}); }; getFool(); getFool(); getFool(); getFool(); getFool(); getFool(); 

只执行最后一个请求。

您可以使用Basic jquery Ajax方法代替使用库:

beforeSend:{}

例如:

 xhr = jQuery.ajax({ url: /*Your URL*/ type: "POST", data: { //data }, /* if there is a previous ajax request, then we abort it and then set xhr to null */ beforeSend : function() { if(xhr != null) { xhr.abort(); } }, success:function(){} });