使用jQuery AJAX显示正确的错误消息

Cam*_*ron 7 jquery

目前,如果我有一个ajax请求的错误,如提交表单(我使用的是ASP.NET MVC 3),它将显示类似"内部服务器错误"的内容.

但是如果我在不使用Ajax的情况下进行提交,则.net将显示实际的服务器错误.

关于我怎么可能得到错误显示的任何想法?所以我的用户可以报告问题而不是只能说"内部服务器错误"

谢谢

Man*_*eUK 22

虽然我不建议向用户显示错误编号以及实际响应错误消息,但这是通过添加error回调来实现此目的的方法

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

xhr是XmlHttpRequest.

readyState值为1:loading,2:loaded,3:interactive,4:complete.

status是HTTP状态号,即404:未找到,500:服务器错误,200:ok.

responseText是服务器的响应 - 可以是来自Web服务的文本或JSON,也可以是来自Web服务器的HTML.


BNL*_*BNL 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";
    }
});
Run Code Online (Sandbox Code Playgroud)