2013-07-18 40 views
5

Tôi viết thư này javascript ứng dụng và tôi đang sử dụng backbone.js .Trên ứng dụng tôi có một số quan điểm trong một trang, quan điểm đa số gửi request (yêu cầu < - họ là ajax -query, nhưng không phải backbone.js ajax-query) đến máy chủ cùng một lúc và kết quả là họ đã có một khoảng thời gian gần gũi. Nếu xảy ra sự cố với máy chủ hoặc mạng, một số response sẽ bị hỏng và trả lại do lỗi. Vấn đề là tất cả các lỗi cần hiển thị bằng cách cảnh báo cho người dùng, mặc dù thực tế rằng nó là nhàm chán để xem nhiều hơn và nhiều hơn nữa cảnh báo cho người dùng. Làm thế nào tôi có thể quản lý các cảnh báo? Tôi đã sử dụng settimeout để hiển thị cảnh báo, nhưng cách này không hữu ích cho số giảm số số lượng cảnh báo. Nếu bạn biết cách khác, hãy cho tôi biết về nó?cách quản lý lỗi phản ứng ajax

Trả lời

4
function alertMajorError(errMsg) { 
     errMsg = typeof errMsg !== 'undefined' ? errMsg : 'Fatal Error!'; 
     var n = noty({layout:'center',type:'error',text:errMsg,timeout:false}); 
    } 
    $(document).ajaxError(function(event, jqxhr, settings, exception) { 
     if (exception == 'abort') return false; 
     alertMajorError('An AJAX error [' + exception + '] occurred in script: ' + settings.url + '<br \><br \>Please report this to the development team!'); 
     console.log(event, jqxhr, settings, exception); 
}); 

Bạn có thể thiết lập báo cáo mặc định AJAX error trong tệp JS chính của bạn như tôi có. Tôi sử dụng plugin jQuery noty!

+0

P.S. Nếu bạn đang tự hỏi tại sao tôi bỏ qua lỗi 'abort', đó là vì' Autocomplete' và một số tiện ích async khác sẽ cố ý hủy bỏ để chúng có thể bắt đầu lại khi có thay đổi với tham số đầu vào. Nó xảy ra rất nhiều, vì vậy tôi vô hiệu hóa những người. – DevlshOne

1

Tất cả các lỗi phải được hiển thị ... Được rồi, sau đó chỉ cần không cảnh báo(), sử dụng các popup div với các lỗi và hiển thị chúng trong một khu vực thông báo, e. g., ở góc trên bên trái của trang của bạn. Xem cách thực hiện trong gmail: khi xảy ra lỗi ajax, một thông báo được hiển thị ở trung tâm của trang, người dùng có thể đọc nó, nhưng toàn bộ giao diện không bị chặn.