当前位置: 首页 > 面试题库 >

在新请求上中止先前的ajax请求

江文斌
2023-03-14
问题内容

我有一个函数,在输入更改时运行ajax调用。

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

我的问题是,在开始新的ajax调用之前,我将如何中止它?不使用全局变量。(请参阅此处的类似问题的答案)

我当前代码的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
    }
});


 类似资料:
  • 问题内容: 从我读过的一般解决方案如下: 然后在ajax事件中。但是,这导致没有请求被发送。 我要实现的目标是中止所有声明为DataRequest的ajax操作(例如),并仅允许进行最新请求。目前,我有一个按钮,单击该按钮可以启动请求并添加加载微调器。如果多次单击它,只会使一堆加载微调器充满我的页面。我该如何预防? 以下是相关代码: 问题答案: 这是我需要多个请求并仅处理最后一个请求时使用的模式:

  • 问题内容: 是否有可能使用jQuery 取消/中止尚未收到响应的Ajax请求? 问题答案: 大多数jQuery Ajax方法都返回XMLHttpRequest(或等效的)对象,因此您可以使用abort()。 请参阅文档: 中止方法 (MSDN)。取消当前的HTTP请求。 abort()(MDN)。如果请求已经发送,则此方法将中止请求。 更新: 从jQuery 1.5开始,返回的对象是名为jqXHR

  • 问题内容: 使用jQuery,如何 取消/中止 尚未收到响应 的Ajax请求 ? 问题答案: 大多数jQuery Ajax方法都返回XMLHttpRequest(或等效的)对象,因此您可以使用。 请参阅文档: abort Method (MSDN).取消当前的HTTP请求。 abort()(MDN)。如果请求已经发送,则此方法将中止请求。 var xhr = $.ajax({ type: “POS

  • 问题内容: 我正在使用JSONP ajax调用从其他域加载某些内容,并且如果用户在按钮上造成“ mouseover”,则将执行所有这些操作。 我可以将$ .ajax()调用return捕获为xhr对象,并在用户每次导致“ mouseover”时使用它中止ajax请求。但是仍然会调用JSONP回调函数,这会导致错误,并且我认为这是因为xhr.abort()方法不会阻止调用回调函数。 我尝试用try

  • 问题内容: 我正在使用jquery发出ajax请求 如何手动停止我的特定Ajax请求? 问题答案: 该方法返回一个可以用于执行此操作的对象: 然后,当您想停止请求时:

  • 问题内容: 我一直在搜索,这个问题似乎很简单,但是找不到答案。我有多个请求调用了不同的网址。但是对于每个网址,我只想要一次结果,并且它必须是被调用的同一网址中的最后一个。我现在的问题是“如何只获得最后一个?” 我看着这个,看来已经3岁了: http://plugins.jquery.com/project/ajaxqueue 还有其他方法可以很好地干净地执行此操作吗?如果有这样的事情,那将是完美的