jQuery Ajax错误函数

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (209)

我有一个Ajax调用传递数据到页面,然后返回一个值。

我已经从页面中检索到了成功的调用,但是我已经对它进行了编码,以便在asp中引发错误。我如何从jquery中检索错误?

例如:

cache: false,
url: "addInterview_Code.asp",
type: "POST",
datatype: "text",
data: strData,
success: function (html) {
    alert('successful : ' + html);
    $("#result").html("Successful");
},
error: function (error) {
    **alert('error; ' + eval(error));**
}

这是我不明白的错误。在函数中,我需要放什么参数,以便我可以使用我在服务器中引发的错误消息。

提问于
用户回答回答于

试试这个:

error: function(jqXHR, textStatus, errorThrown) {
  console.log(textStatus, errorThrown);
}

如果你想通知您的前端验证错误,请尝试返回json:

dataType: 'json',
success: function(data, textStatus, jqXHR) {
   console.log(data.error);
}

你的asp脚本SCH应该返回:

{"error": true}
用户回答回答于

Ajax error函数中所需的参数是jqXHR, exception,你可以像下面一样使用它:

$.ajax({
    url: 'some_unknown_page.html',
    success: function (response) {
        $('#post').html(response.responseText);
    },
    error: function (jqXHR, exception) {
        var msg = '';
        if (jqXHR.status === 0) {
            msg = 'Not connect.\n Verify Network.';
        } else if (jqXHR.status == 404) {
            msg = 'Requested page not found. [404]';
        } else if (jqXHR.status == 500) {
            msg = 'Internal Server Error [500].';
        } else if (exception === 'parsererror') {
            msg = 'Requested JSON parse failed.';
        } else if (exception === 'timeout') {
            msg = 'Time out error.';
        } else if (exception === 'abort') {
            msg = 'Ajax request aborted.';
        } else {
            msg = 'Uncaught Error.\n' + jqXHR.responseText;
        }
        $('#post').html(msg);
    },
});

参数

jqXHR:

它实际上是一个看起来像这样的错误对象

你也可以在自己的浏览器控制台查看此,通过使用console.log内部error类的函数:

error: function (jqXHR, exception) {
    console.log(jqXHR);
    // Your error handling logic here..
}

我们使用status这个对象的属性来获取错误代码,就像我们得到status = 404一样,这意味着找不到请求的页面。它根本不存在。根据该状态码,我们可以将用户重定向到登录页面或任何我们的业务逻辑需要的地方。

如果你使用jQuery 1.8或更高版本,我们需要更新成功和错误功能逻辑,如: -

// Assign handlers immediately after making the request,
// and remember the jqXHR object for this request
var jqxhr = $.ajax("some_unknown_page.html")
    .done(function (response) {
        // success logic here
        $('#post').html(response.responseText);
    })
    .fail(function (jqXHR, exception) {
        // Our error logic here
        var msg = '';
        if (jqXHR.status === 0) {
            msg = 'Not connect.\n Verify Network.';
        } else if (jqXHR.status == 404) {
            msg = 'Requested page not found. [404]';
        } else if (jqXHR.status == 500) {
            msg = 'Internal Server Error [500].';
        } else if (exception === 'parsererror') {
            msg = 'Requested JSON parse failed.';
        } else if (exception === 'timeout') {
            msg = 'Time out error.';
        } else if (exception === 'abort') {
            msg = 'Ajax request aborted.';
        } else {
            msg = 'Uncaught Error.\n' + jqXHR.responseText;
        }
        $('#post').html(msg);
    })
    .always(function () {
        alert("complete");
    });

扫码关注云+社区

领取腾讯云代金券