2011-02-03 12 views
1

私は、jQueryプラグインを用意しています。その一部にajaxStopを実装する必要があります。 以下は、私のコードからその構造を示すスニペットです(100%ではないかもしれません)。jQuery ajaxStop in ajax success

私は、ajaxStopをグローバル関数として実装する必要がある場合、どのように関数を設定するかを示していますが、現在の設定でどのように行うのかはわかりません。

問題は、私のajax応答が正常に戻ってきても、時にはajaxStopが起動しないことがあります。

  1. ajax成功コールバックからajaxStopを呼び出すことはできますか?私は $上ajaxStop()。ajaxStop OR $(この).ajaxStop
を呼び出す必要がありますどのような要素
  • 任意の助けのために非常に多くの

    ありがとう!

    また、誰かがMacでajaxStopに問題があったのでしょうか? これは常に機能しない理由の解決策を見つけることができません。

    私はこの上だけ更新

    (function($) { 
    
    $.fn.doRentalButtons = function($params) { 
    
        var newMethods = { 
    
         startAction:function() { 
          var $button = $('a.button'); 
          $button.click(function(){ 
           var params = {one:'something',two:'morethings'} 
           $(this).doAjax(params); 
          }); 
         }, 
    
         doAjax:function(params) { 
    
          $current_button = $(this); 
          $container_div = $('#container'); 
    
          $.ajax({ 
           type: 'POST', 
           url: 'whatever.html', 
           data: params, 
           success: function(data) { 
            //dostuff 
    
            var jQueryObject = 
            if (global_var_hide == 0) { 
             $(this).afterPostRequests($current_button); 
            } 
           }() 
          }); 
         }, 
    
         afterPostRequests:function($current_button) { 
          $().ajaxStop(function(){ 
           $(this).show(); 
           $(this).positionDiv($current_button); 
          }); 
         } 
        }; 
    
        $.each(newMethods, function(i) { 
         $.fn[i] = this; 
        }); 
    }; 
    
    })(jQuery); 
    
  • 答えて

    2

    :(ajaxStopは非常に信頼性がないと思います。各ボタンのクリックでカウンター インクリメント私が代わりにAjaxStopのカウンタを使用して終了

    と。カウンターオフアヤックス成功/エラーマイナス1に。

    それから私は私のAJAXリクエストを実行するとカウンタ== 0

    T彼は私が必要とするもののために働くようです。しかし、これは一時的な解決策のように思えますし、おそらくもっと良い方法があります。

    (function($) { 
    
    $.fn.doRentalButtons = function($params) { 
    
        var ajax_busy = 0; 
    
        var newMethods = { 
    
         startAction:function() { 
          var $button = $('a.button'); 
          $button.click(function(){ 
           var params = {one:'something',two:'morethings'} 
           $(this).doAjax(params); 
          }); 
         }, 
    
         doAjax:function(params) { 
    
          $current_button = $(this); 
          $container_div = $('#container'); 
    
          ajax_busy++; 
    
          $.ajax({ 
           type: 'POST', 
           url: 'whatever.html', 
           data: params, 
           success: function(data) { 
            //dostuff 
    
            ajax_busy--; 
    
            var jQueryObject = $('#myDiv'); 
            if (ajax_busy == 0) { 
    
             jQueryObject.show(); 
             jQueryObject.positionDiv($current_button); 
    
            } 
           }, 
           error: function() { 
            ajax_busy--; 
           } 
          }); 
         } 
        }; 
    
        $.each(newMethods, function(i) { 
         $.fn[i] = this; 
        }); 
    }; 
    
    })(jQuery); 
    
    関連する問題