2011-11-08 63 views
11

團隊成員要把它放到我們的項目Javascript:如何停止多個jQuery ajax錯誤處理程序?

$(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. 
    }); 

} 

如何停止抓住所有發生的錯誤嗎?我可以在錯誤函數中做些什麼,比如{ event.StopPropogation(); }或者我是否必須找出一些機制來讓catch有選擇性地忽略所有的東西?

+1

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

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

回答

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調用中設置它。 –