繁体   English   中英

多个jquery ajax请求-处理它的方法

[英]Multiple jquery ajax request - ways to handle it

如果有jquery ajax加载,而我通过快速单击该按钮来触发另一个ajax,则它会卡住。 如何处理多个一起触发的请求?

我该怎么办?

  1. 放弃/中止所有先前的请求,仅处理最新的请求。
  2. 在先前的请求完成之前,不允许新请求(变化:可以是同一ajax请求,也可以是页面中的任何新ajax请求)。

AJAX是异步的。 因此,您可以同时解雇他们。

或者在成功回调(或.done()回调)中,您可以一个接一个地调用一个请求。 因此,因为您可以控制,所以很容易管理您的问题(单击按钮但遇到困难)。

$.ajax({
  url: "http://..."
})
  .done(function( data ) {
    // Other AJAX call 
    // or restore disabled elements
    // while you were receiving the response.
  });

如果要解决,请告诉我。

您可以使用ajax“ beforeSend”锁定当前请求。这样,只有在前一个请求完成后,用户才能发送新请求。 对于流程序列,您可以使用全局值来存储数据,并始终为其分配新的响应值。

   function request(callback){
       if(!$btn.hasClass('disabled')){
           $.ajax({
               type:'...',
               url:'...',
               beforeSend:function(){
                  $btn.addClass('disabled');//so that user cannot send a new request
               },
               success:function(data){
                   window.g_data = data;
                   callback && callback()//success callback
                   $btn.removeClass('disabled');
               }
           })
       }


  }
  function callback(){

    //process window.g_data
  }

看一下这个库:

异步是一个实用程序模块,它提供直接,强大的功能来处理异步JavaScript。

异步

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM