jQuery AJAX 错误函数

yacmzcpb  于 2022-12-26  发布在  jQuery
关注(0)|答案(9)|浏览(205)

我有一个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));**
}

我不明白的是错误位,在函数中我需要放置什么参数,这样我就可以使用我在服务器中**引发的错误信息。

lxkprmvk

lxkprmvk1#

您可以使用类似于以下内容的内容:

***注意:***responseText返回服务器responsestatusText返回预定义的

status错误的消息。例如:
responseText在某些框架(如Yii2)中返回类似于"Not Found (#404)"的内容,但
返回"Not Found".

$.ajax({
    cache: false,
    url: "addInterview_Code.asp",
    type: "POST",
    datatype: "text",
    data: strData,
    success: function (html) {
        alert('successful : ' + html);
        $("#result").html("Successful");
    },
    error: function (data) {
        console.log(data.status + ':' + data.statusText,data.responseText);
    }
});
v8wbuo2f

v8wbuo2f2#

From jquery.com:

The jqXHR.success(), jqXHR.error(), and jqXHR.complete()
callback methods introduced injQuery 1.5 are deprecated
as of jQuery 1.8. To prepare your code for their eventual 
removal, use jqXHR.done(), jqXHR.fail(), and jqXHR.always() instead.

如果需要全局处理程序,可以使用:

.ajaxStart(), .ajaxStop(),
.ajaxComplete(), .ajaxError(),
.ajaxSuccess(), .ajaxSend()
6yjfywim

6yjfywim3#

这对我有用。

$.ajax({
    type: 'POST',
    url: url,
    data: {
        menu: str
    },
    beforeSend: function(){
        $.notify("sorting", "info");
    },
    success: function(data) {
        $.notify("success", "success");
    },
    error: function (data) {
        $.notify("Opps!", "error");
    }
    });
u91tlkcl

u91tlkcl4#

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);
    },
});
    • 一个

参数

    • 腾讯人力资源:**

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

您也可以在自己的浏览器控制台中查看此内容,方法是在error函数中使用console.log,如下所示:

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或更高版本,我们将需要更新成功和错误函数逻辑,如下所示:-

// 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");
    });
vcirk6k6

vcirk6k65#

试试这个:

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

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

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

您的asp脚本应返回:

{"error": true}
pod7payv

pod7payv6#

下面是你如何把asp错误拉出来。

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.');
                  }
              }
ulmd4ohb

ulmd4ohb8#

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

ds97pgxw9#

你使用的函数

error(error)

但是jquery实际上是在寻找一个有三个参数的函数:

error(jqXHR, textStatus, errorThrown)

还需要添加两个参数。
另外:请看看上面所有提到“弃用”的评论:)

$.ajax("www.stackoverflow.com/api/whatever", {
    dataType:"JSON"
    data: { id=1, name='example' }
}).succes(function (result) {
    // use result
}).error(function (jqXHR, textStatus, errorThrown) {
    // handle error
});

相关问题