2011-11-07 33 views
7

當前,如果我在提交表單(如我使用ASP.NET MVC 3)時發生ajax請求錯誤,它將顯示類似'內部服務器錯誤'的內容。用jQuery顯示正確的錯誤信息AJAX

但是,如果我不使用Ajax進行提交,那麼.net將顯示實際的服務器錯誤。

任何想法,我怎麼可能會得到錯誤顯示?所以,我的用戶可以只能夠說「內部服務器錯誤」

感謝

+4

向用戶顯示實際的錯誤消息可能引發安全問題。給他們一個與DB中記錄的異常相對應的ID更好。 – SLaks

回答

23

雖然我不會建議顯示給用戶的實際響應錯誤消息的錯誤號,這是你如何可以通過添加error回調

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

XHR是XmlHttpRequest的做到這一點。

readyState值爲1:加載,2:加載,3:交互,4:完成。

狀態是HTTP狀態數,即404:沒有發現,500:服務器錯誤,200:確定。

responseText是來自服務器的響應 - 可以是來自Web服務的文本或JSON,也可以是來自Web服務器的HTML。

6

此代碼將與來自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"; 
    } 
});