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

取消先前的ajax请求jQuery

冷吉星
2023-03-14
问题内容

从我读过的一般解决方案如下:

var DataRequest = $.ajax({ /* ... */ });

然后DataRequest.abort()beforeSendajax事件中。但是,这导致没有请求被发送。

我要实现的目标是中止所有声明为DataRequest的ajax操作(例如),并仅允许进行最新请求。目前,我有一个按钮,单击该按钮可以启动请求并添加加载微调器。如果多次单击它,只会使一堆加载微调器充满我的页面。我该如何预防?

以下是相关代码:

beforeSend: function() {
    $('<div class="grid"></div>')
        .attr('id', 'loading')
        .hide()
        .insertBefore('#output')
        .fadeIn();
},

success: function(data) {
    $('#loading').hide(function () {
        $(this).remove();
    });
}

问题答案:

这是我需要多个请求并仅处理最后一个请求时使用的模式:

var fooXHR, fooCounter=0;
$(...).bind( 'someEvent', function(){
  // Do the Right Thing to indicate that we don't care about the request anymore
  if (fooXHR) fooXHR.abort();

  var token = ++fooCounter;
  fooXHR = $.get( ..., function(data){
    // Even aborted XHR may cause the callback to be invoked
    if (token != fooCounter) return;

    // At this point we know that we're using the data from the latest request
  });
});


 类似资料:
  • 问题内容: 我有一个函数,在输入更改时运行ajax调用。 但是,有可能在之前的ajax调用完成之前再次触发该函数。 我的问题是,在开始新的ajax调用之前,我将如何中止它?不使用全局变量。(请参阅此处的类似问题的答案) 我当前代码的jsfiddle: Javascript: HTML: 问题答案:

  • 本文向大家介绍jQuery取消ajax请求的方法,包括了jQuery取消ajax请求的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了jQuery取消ajax请求的方法。分享给大家供大家参考。具体分析如下: 这里需要注意的是,在ajax请求未响应之前可以用xhr.abort()取消,但如果请求已经到达了服务器端,这样做的结果仅仅是让浏览器不再监听这个请求的响应,但服务器端仍然会进行处理

  • 问题内容: 我有一个AJAX请求,将每5秒发送一次。但是问题出在AJAX请求之前,如果先前的请求没有完成,我必须中止该请求并提出新的请求。 我的代码是这样的,如何解决这个问题? 问题答案: jQuery ajax方法返回一个XMLHttpRequest对象。您可以使用此对象取消请求。 XMLHttpRequest具有中止方法,该方法会取消请求,但是如果请求已经发送到服务器,那么即使我们中止请求 ,

  • 问题内容: 我有一个调用方法,该方法更改绑定到单选输入的属性。 我也有相同验证的表单上的文本输入(required = true)。 如果我离开了文本输入栏,并点击同,从模型属性如预期,因为文字输入从未处理和验证从来没有火灾的单选按钮更新。 但是,如果在一个不同的我首先点击与, 然后 与链接,确认消息消失,但单选按钮值也 不会 离即使UIInput单选按钮从未处于无效状态的模型更新。 我发现这很烦

  • 问题内容: 我用于ajax请求,而+ 用于渲染UI。在我的应用程序中,有第三方时间轴(reactJS组件)。时间轴可以通过鼠标滚动进行管理。应用程序在发生任何滚动事件后发送对实际数据的ajax请求。问题是服务器上的请求处理可能比下一个滚动事件慢。在这种情况下,应用可能会有几个(通常是2-3个)请求已被弃用,因为用户会进一步滚动。这是一个问题,因为每次接收新数据时线都会开始重绘。(因为它是react

  • 我使用处理ajax请求,使用渲染UI。在我的应用程序中,有第三方时间线(reactJS组件)。时间线可以通过鼠标滚动来管理。在任何滚动事件之后,应用程序都会发送实际数据的ajax请求。问题是服务器上的请求处理可能比下一个滚动事件慢。在这种情况下,应用程序可能有几个(通常为2-3个)请求,由于用户进一步滚动,这些请求已经被弃用。这是一个问题,因为每次收到新数据时,时间线都开始重新绘制。(因为它是re