JQuery AJAX发布请求引发异常虽然已经处理

时间:2013-07-04 22:14:17

标签: jquery ajax json google-chrome

我有一个登录JSON服务,获取用户名/密码。 当我通过JQuery 1.10.1 AJAX调用它并输入正确的凭据时,它可以正常工作。但是当我输入错误的凭据时,错误函数处理程序IS FIRED AS EXPECTED,但是! jquery仍然引发了我可以在Chrome / Firefox控制台上看到的异常:

POST http://localhost/services/admin/login 500 (Internal Server Error) 

处理了(故意的)ajax错误!为什么我将其视为javascript错误?

谢谢。

$.ajax({
    url: "../services/admin/login",
    type: "POST",
    data: JSON.stringify({ 'username': username, 'password': password }),
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    cache: false,
    success: function (response, textStatus, jqXHR) {
        window.location = "index.html";
    },
    error: function (jqXHR, textStatus, errorThrown) {
        $(".errorDiv").html(jqXHR.responseJSON);
    }
});

2 个答案:

答案 0 :(得分:1)

您在控制台中遇到的错误被ChromeFirefox视为网络错误,而不是Javascript运行时错误。

无论您是否在某处处理错误,他们都会打印此消息,因为消息的目的仅仅是提供信息。

答案 1 :(得分:0)

这就是它的工作原理,浏览器在网络堆栈中遇到错误并报告它。如果它只是您正在进行的身份验证,那么您应该在您的服务器上启动401 - 未授权的响应,500意味着完整的服务器错误。

另外,就像这样来回传递凭证这样被认为是反模式而且不建议。