首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >jQuery ajax错误函数

jQuery ajax错误函数
EN

Stack Overflow用户
提问于 2011-07-23 00:13:22
回答 9查看 553.6K关注 0票数 144

我有一个ajax调用,它将数据传递给一个页面,然后该页面返回一个值。

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

例如:

代码语言:javascript
复制
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));**
}

这是我不理解的错误位。在函数中,我需要放入什么参数,这样我才能使用我在服务器中引发的错误消息。

EN

回答 9

Stack Overflow用户

发布于 2013-01-28 21:32:45

Ajax error函数中必需的参数是jqXHR, exception,您可以像下面这样使用它:

代码语言:javascript
复制
$.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:

它实际上是一个错误对象,如下所示

您也可以通过在error函数中使用console.log在您自己的浏览器控制台中查看它,如下所示:

代码语言:javascript
复制
error: function (jqXHR, exception) {
    console.log(jqXHR);
    // Your error handling logic here..
}

我们使用此对象的status属性来获取错误代码,例如,如果我们得到status = 404,这意味着无法找到请求的页面。它根本不存在。基于该状态代码,我们可以将用户重定向到登录页面或我们的业务逻辑所需的任何位置。

异常:

这是显示异常类型的字符串变量。因此,如果我们得到404错误,exception文本将简单地是' error‘。同样,我们可能会得到'timeout','abort‘作为其他异常文本。

弃用通知: jqXHR.success()jqXHR.error()jqXHR.complete()回调从jQuery 1.8起不再推荐使用。要为最终删除它们做好代码准备,请改用jqXHR.done()jqXHR.fail()jqXHR.always()

因此,如果您使用的是jQuery 1.8或更高版本的,我们需要更新成功和错误函数逻辑,如下所示:

代码语言:javascript
复制
// 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");
    });

希望它能帮上忙!

票数 251
EN

Stack Overflow用户

发布于 2011-07-23 00:21:06

试试这个:

代码语言:javascript
复制
error: function(jqXHR, textStatus, errorThrown) {
  console.log(textStatus, errorThrown);
}

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

代码语言:javascript
复制
dataType: 'json',
success: function(data, textStatus, jqXHR) {
   console.log(data.error);
}

你的asp脚本应该会返回:

代码语言:javascript
复制
{"error": true}
票数 104
EN

Stack Overflow用户

发布于 2014-08-27 02:24:56

下面是如何提取asp错误的方法。

代码语言:javascript
复制
              cache: false,
              url: "addInterview_Code.asp",
              type: "POST",
              datatype: "text",
              data: strData,
              success: function (html) {
                  alert('successful : ' + html);
                  $("#result").html("Successful");
              },
              error: function (jqXHR, textStatus, errorThrown) {
                  if (jqXHR.status == 500) {
                      alert('Internal error: ' + jqXHR.responseText);
                  } else {
                      alert('Unexpected error.');
                  }
              }
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6792878

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档