2011-11-07 54 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"; 
    } 
});