javascript
  • php
  • jquery
  • ajax
  • 2013-10-29 64 views 4 likes 
    4

    我有這樣的代碼檢查頁面上的某個Ajax是否正在處理中?

    $('#postinput').on('keyup',function(){ 
        var txt=$(this).val(); 
    
        $.ajax({ 
         type: "POST", 
         url: "action.php", 
         data: 'txt='+txt, 
         cache: false, 
         context:this, 
         success: function(html) 
         { 
          alert(html); 
         } 
    
        }); 
    
    }); 
    
    
    $('#postinput2').on('keyup',function(){ 
        var txt2=$(this).val(); 
    
        $.ajax({ 
         type: "POST", 
         url: "action.php", 
         data: 'txt2='+txt2, 
         cache: false, 
         context:this, 
         success: function(html) 
         { 
          alert(html); 
         } 
    
        }); 
    
    }); 
    

    假設用戶點擊#postinput,它需要30秒process.If在此期間用戶點擊#postinput2。我想給他一個警報"Still Processing Your Previous request"。有沒有辦法可以檢查一些Ajax是否仍在處理?

    假設我在頁面上運行了很多ajax。有沒有一種方法可以知道是否有一個正在處理?

    +0

    因此,快速(也可能髒)IDE我的一個是:只是使用全局布爾「isProcessing」並將其設置爲true/false,同時處理/在Ajax的成功方法。編輯:好的,現在有和答案一樣的東西;) – Dominik

    +0

    @Dominik tnx ..如果我在同一頁面上有一個ajax假設爲5,那麼這個真假方法將不起作用。是否有任何方法來檢查,即使1 ajax正在進行..? – Ace

    +1

    只需檢查'$ .active'屬性。它在官方文檔中沒有提到,它可能會在以後更改,但目前它[由單元測試覆蓋](https://github.com/jquery/jquery/blob/705216dc4664a85cdb44b460f8c2e0edcf27dd97/test/unit/ajax.js#L1957) ,並沒有改變[自2010](http://stackoverflow.com/questions/3148225/jquery-active-function),甚至有一些錯誤跟蹤附加。 ) – raina77ow

    回答

    6

    您可以將變量設置爲truefalse根據AJAX調用開始時的,例如:

    var ajaxInProgress = false; 
    
    $('#postinput2').on('keyup',function(){ 
        var txt2=$(this).val(); 
    
        ajaxInProgress = true; 
        $.ajax({ 
         .. 
         .. 
         success: function(html) { 
          ajaxInProgress = false; 
    

    現在檢查它,如果你的電話之前,需要:

    if (ajaxInProgress) 
        alert("AJAX in progress!"); 
    

    或者,使用全局AJAX事件來設置變量

    $(document).ajaxStart(function() { 
        ajaxInProgress = true; 
    }); 
    
    $(document).ajaxStop(function() { 
        ajaxInProgress = false; 
    }); 
    
    +0

    @RoryMcCrossan - 甚至沒有想到:\ - 我希望與OP的邏輯,2永遠不會併發,但有一個機會..hmm ..ideas ? – tymeJV

    +0

    tnx ..我想問一下,如果我在同一頁上有多個ajax假設5,那麼這個真假方法將不起作用。是否有任何方法來檢查,即使1 ajax正在進行..? – Ace

    +0

    呃不是我所知道的 – tymeJV

    相關問題