javascript - 在完成前一个请求之前中止新的 AJAX 请求

标签 javascript ajax jquery

我有一个函数可以在输入发生变化时运行 AJAX 调用。

但是,在上一个 ajax 调用完成之前,该函数有可能再次被触发。

我的问题是,如何在开始新的 AJAX 调用之前中止之前的 AJAX 调用? 不使用全局变量。 (参见类似问题的答案 here )

JSFiddle我当前的代码:

Javascript:

var filterCandidates = function(form){
    //Previous request needs to be aborted.
    var request = $.ajax({
        type: 'POST',
        url: '/echo/json/',
        data: {
            json: JSON.stringify({
                count: 1
            })
        },
        success: function(data){
            if(typeof data !== 'undefined'){
                jQuery('.count').text(data.count)
                console.log(data.count);
            }
        }
    });
};

if(jQuery('#search').length > 0){
    var form = jQuery('#search');
    jQuery(form).find(':input').change(function() {
        filterCandidates(form);
    });
    filterCandidates(form);
}

HTML:

<form id="search" name="search">
    <input name="test" type="text" />
    <input name="testtwo" type="text" />
</form>
<span class="count"></span>

最佳答案

 var currentRequest = null;    

currentRequest = jQuery.ajax({
    type: 'POST',
    data: 'value=' + text,
    url: 'AJAX_URL',
    beforeSend : function()    {           
        if(currentRequest != null) {
            currentRequest.abort();
        }
    },
    success: function(data) {
        // Success
    },
    error:function(e){
      // Error
    }
});

关于javascript - 在完成前一个请求之前中止新的 AJAX 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19244341/

相关文章:

FireFox 中的 Javascript CSV 文件下载问题,可在 Chrome 中使用

javascript - jQuery Ajax 回调中的串联未执行?

jquery - 如何控制ajax请求中的缓存控制

javascript - 在 jquery 中追加文本长度

c# - System.Management 资源监控统计信息,如 I/O、CPU、内存使用...等'

jquery - 如何从 BODY 元素的特定类定位 HTML 元素

javascript - iPhone 5s - iOS 9.0.2 - safari - 横向模式时隐藏地址栏

javascript - AngularJS 无法识别 LiveScript 的 Controller

JavaScript OR 运算符

jquery - 我可以简单地用jQuery附加youtube嵌入代码,还是应该使用AJAX?