2011-11-08 18 views
11

Bir ekip üyesi projemizin içine koymakJavascript: Birden çok jQuery ajax hata işleyicileri nasıl durdurulur?

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

Ancak ben nasıl durdurabilirim

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

} 

(o gürültü olurdu ve doğrulama gerekli değil gibi) benim hatalardan birini baskılamak istiyor Tüm hatayı yakalama lütfen? Hata fonksiyonunda { event.StopPropogation(); } gibi bir şey yapabilir miyim, yoksa yakalamayı tüm şeyleri görmezden gelmek için bir mekanizma mı çalışmalıyım?

+1

:

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

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

cevap

0

Kodunuza yanlış olarak varsayılan bir boole atacağım. Hatayı ilk kez atıldığında doğru olarak ayarlayın ve hata işlevinin başlangıcında doğru olup olmadığını kontrol edin. gibi

şey:

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

Aslında, global ajax hata elindeki booleanı istersiniz ler, ve yerel ajax çağrısında bunu yaparsınız. –

İlgili konular