取消对象内的 ajax 请求

Posted

技术标签:

【中文标题】取消对象内的 ajax 请求【英文标题】:Cancelling an ajax request within an object 【发布时间】:2016-02-05 11:56:08 【问题描述】:

我有一个写在对象中的 ajax 请求,我需要编写一个函数来取消这个特定的请求。我查看了 abort 方法,但不知道如何让它以这种方式工作。

getItems: function(categoryID, format, numberOfResults, types, sortBy, searchString)
    var url = host+"getItems?categoryID="+categoryID+"&format="+format+"&numberOfResults="+numberOfResults+"&types="+types+"&sortBy="+sortBy+'&fileName='+searchString;
    return $.ajax(
        type:"get",
        dataType:"html",
        url: url,
        success:function(data)
            resItems = data;
        ,
        error: function(data)
            console.log(data);
        
    );
,

我遇到的问题是当调用某些元素时会调用此函数,如果用户快速连续单击两个元素,我需要在发起下一个请求之前取消此请求。

该页面有多个 ajax 请求,所以我不能一概取消,但需要专门取消这个。

对象的结构是这样的:

var items: 
    getItems: function()
    ,
    getItemInfo: function()
    

等等。

我想做的是根据其请求 URL 定位一个 ajax 请求并取消它,这可能来自外部函数吗?

【问题讨论】:

【参考方案1】:

因为 getItems 返回的是 XMLHttpRequest,所以它应该很简单

resp = items.getItems(params)
resp.abort()

【讨论】:

这对我来说不太好用,但我找到了一个在取消 ajax 请求之外的解决方法。感谢您的宝贵时间。

以上是关于取消对象内的 ajax 请求的主要内容,如果未能解决你的问题,请参考以下文章

和浏览器异步请求取消相关的那些事

如何取消 Ajax 请求? [复制]

如何取消/中止 jQuery AJAX 请求?

jQuery.ajax()的参数

ajax请求响应过长怎么解决

javascript:取消各种请求