簡體   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