2011-11-08 36 views
11

Một thành viên trong nhóm đặt này vào dự án của chúng tôiJavascript: Làm thế nào để ngăn chặn nhiều trình xử lý lỗi ajax jQuery?

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

Tuy nhiên tôi muốn để đàn áp một trong những lỗi của tôi (vì nó sẽ là tiếng ồn và xác minh là không cần thiết)

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

} 

Làm thế nào tôi có thể ngăn chặn bắt tất cả các lỗi từ happenning xin vui lòng? Tôi chỉ có thể làm điều gì đó trong chức năng lỗi như { event.StopPropogation(); } hay tôi phải làm việc ra một số cơ chế để bắt được tất cả chọn lọc bỏ qua những thứ xin vui lòng?

+1

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

Trả lời

15

sự kiện toàn cầu có thể bị vô hiệu hóa, cho một yêu cầu Ajax Đặc biệt, bằng cách thông qua trong các tùy chọn toàn cầu, như vậy:

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

Trích từ: http://docs.jquery.com/Ajax_Events

0

Tôi sẽ chỉ ném một boolean vào mã của bạn được mặc định là false. Đặt nó thành true trong lần đầu tiên lỗi được ném và đảm bảo kiểm tra đúng lúc bắt đầu chức năng lỗi.

Cái gì như:

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

Thực ra bạn muốn boolean trong bàn tay lỗi ajax toàn cầu ler, và bạn sẽ đặt nó trong cuộc gọi ajax cục bộ. –

Các vấn đề liên quan