2011-11-07 4 views
7

현재 ASP.NET MVC 3을 사용하여 양식을 제출하는 등의 ajax 요청에 오류가 발생하면 '내부 서버 오류'와 같은 내용이 표시됩니다.jQuery AJAX로 올바른 오류 메시지 표시

그러나 Ajax를 사용하지 않고 제출하면 .net에 실제 서버 오류가 표시됩니다.

어떻게 오류를 표시 할 수있는 아이디어가 있습니까? 그래서 내 사용자는이 코드는 다시 아약스 요청에서 제공된 오류로 현재 페이지의 내용을 대체 할 '내부 서버 오류'라고

감사

+4

사용자에게 실제 오류 메시지를 표시하면 보안 문제가 발생할 수 있습니다. DB에 기록 된 예외에 해당하는 ID를 제공하는 것이 좋습니다. – SLaks

답변

23

나는 이것이 당신이이 XMLHttpRequest의 인 error 콜백

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

XHR을 추가하여이 작업을 수행 할 수있는 방법이다 사용자에게 실제 응답 오류 메시지에 오류 번호를 보여주는 것이 좋습니다 wouldnt가 있지만.

readyState 값은 1 :로드 중, 2 :로드 중, 3 : 대화식, 4 : 완료입니다.

상태은 HTTP 상태 번호입니다 (예 : 404 : 찾을 수 없음, 500 : 서버 오류, 200 : 확인).

응답 텍스트은 웹 서비스의 텍스트 또는 JSON이거나 웹 서버의 HTML 일 수 있습니다.

6

할 수있는 대신 문제를보고 할 수 있습니다.

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"; 
    } 
}); 
관련 문제