2011-11-07 37 views
7

Hiện tại nếu tôi gặp lỗi với yêu cầu ajax, chẳng hạn như gửi biểu mẫu (tôi đang sử dụng ASP.NET MVC 3), nó sẽ hiển thị nội dung như 'Lỗi Máy chủ Nội bộ'.Hiển thị thông báo lỗi thích hợp với jQuery AJAX

Nhưng nếu tôi thực hiện việc gửi mà không sử dụng Ajax thì .net sẽ hiển thị lỗi máy chủ thực.

Bất kỳ ý tưởng nào về cách tôi có thể gặp lỗi để hiển thị? Vì vậy, người dùng của tôi có thể báo cáo các vấn đề thay vì chỉ có thể nói 'lỗi máy chủ nội bộ'

Cảm ơn

+4

Hiển thị thông báo lỗi thực tế cho người dùng có thể tăng vấn đề bảo mật. Tốt hơn là cung cấp cho họ ID tương ứng với một ngoại lệ được ghi lại trong một DB. – SLaks

Trả lời

23

Mặc dù tôi wouldnt khuyên cho thấy người sử dụng một số lỗi với thông báo lỗi phản ứng thực tế đây là cách bạn có thể làm điều này bằng cách thêm error callback

error: function(xhr,err){ 
    alert("readyState: "+xhr.readyState+"\nstatus: "+xhr.status); 
    alert("responseText: "+xhr.responseText); 
} 

XHR là XMLHttpRequest.

readyState giá trị là 1: tải, 2: đã tải, 3: tương tác, 4: hoàn tất.

trạng thái là số trạng thái HTTP, ví dụ: 404: không tìm thấy, 500: lỗi máy chủ, 200: ok.

responseText là phản hồi từ máy chủ - đây có thể là văn bản hoặc JSON từ dịch vụ web hoặc HTML từ máy chủ web.

6

Mã này sẽ thay thế nội dung của trang hiện tại với các lỗi mà trở về từ yêu cầu ajax.

jQuery(document).ajaxError(function (event, request, settings) { 
    if (request.status === 500) { 
     $(document.body).html(request.responseText); 
    } else if (request.status === 401) { 
     // redirect to login, 401 means session is expired. 
     window.location.href = "login page url"; 
    } 
}); 
Các vấn đề liên quan