2011-11-08 4 views
11

チームのメンバーは、私たちのプロジェクトにこれを入れJavascript:複数のjQueryエラーハンドラを停止するにはどうすればいいですか?

$(function() { 
    $("body").bind("ajaxError", function(event, XMLHttpRequest, ajaxOptions, thrownError){ 
     alert(thrownError); 
    }); 
} 

しかし、私は、私は停止することができますどのように

function blah() { 

    ... 

    errFunc = function(event, xhr, opts, errThrown) { 
     //what could I do here? 
     //event.stopImmediatePropagation()? 
    } 

    $.ajax({ 
     url  : '/unimportant_background_refresh', 
     type  : 'GET', 
     data  : { }, 
     dataType : 'json', 
     success : updateBackgroundStuff, 
     error  : errFunc, // Suppresses error message. 
    }); 

} 

を(それがノイズとなり、検証が必要とされていないとして)私のエラーのいずれかをSUPRESSしたいですキャッチは起こってからのすべてのエラーをしてください? { event.StopPropogation(); }のようなエラー関数で何かを行うことはできますか、キャッチすることを選択的にすべて無視するためのメカニズムを試さなければなりませんか?

+1

http://stackoverflow.com/questions/7436195/disabling-some-jquery-global-ajax-event-handlers-for-a-request –

答えて

15

グローバルイベントはそうのように、グローバルオプションを渡すことによって、特定のAjaxリクエストのために、無効にすることができます。

から撮影
$.ajax({ 
    url: "test.html", 
    global: false, 
    // ... 
}); 

http://docs.jquery.com/Ajax_Events

0

私はあなたのコードに真偽値をデフォルト値としてfalseを投げます。初めてエラーが発生した場合はtrueに設定し、エラー機能の開始時にはtrueを確認してください。

のような何か:

function blah() { 
    var errorHappened = false; 

    ... 

    errFunc = function(event, xhr, opts, errThrown) { 
     if (errorHappened) 
      return; 

     errorHappened = true; 

     // handle the errror. 

    } 

    // the rest of your code 

} 
+0

実際には、グローバルなajaxエラーハンドのブール値ler、ローカルajax呼び出しで設定します。 –

関連する問題