jQuery ajax错误函数

jQuery ajax error function

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

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

例如:

1
2
3
4
5
6
7
8
9
10
11
12
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));**
}

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


所需的参数是在errorjqXHR, exceptionAjax功能你可以使用下面的技术和类:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
$.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.
 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.
' + jqXHR.responseText;
        }
        $('#post').html(msg);
    },
});

演示小提琴

参数

jqxhr:

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

Ajax error jqXHR object

所以,你可以在自己的浏览器中查看此控制台,使用console.log样:在error功能

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

我们使用从本物业到status对象得到的错误代码,如果我们得到样本均值= 404状态是所请求的页面不能被发现。它不存在在所有。基于这样的现状,我们可以重定向到登录用户的代码页或任何我们的业务逻辑需要。

异常:

这是一个字符串变量,显示异常的类型。因此,如果我们要exception404错误,文本将简单的"错误"。同样的,我们可以得到的"超时","流产"为文本的其他异常。

Deprecation Notice: The jqXHR.success(), jqXHR.error(), and jqXHR.complete() callbacks are deprecated as of jQuery 1.8. To prepare
your code for their eventual removal, use jqXHR.done(), jqXHR.fail(),
and jqXHR.always() instead.

因此,在你使用的是jQuery的用例1.8或以上的,我们将需要更新的成功和错误的逻辑类函数:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
// 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.
 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.
' + jqXHR.responseText;
        }
        $('#post').html(msg);
    })
    .always(function () {
        alert("complete");
    });

希望它帮助!


试试这个:

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

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

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

你的ASP脚本schould回报:

1
{"error": true}


这里是你如何拉出来的ASP错误。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
              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.');
                  }
              }

你使用函数

1
error(error)

但实际上是寻找一个jQuery函数参数有三:

1
error(jqXHR, textStatus, errorThrown)

你将需要添加两个参数。

所以,请看上面的所有评论说:"这是过时的)

1
2
3
4
5
6
7
8
$.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
});


1
2
3
4
5
6
7
8
9
10
11
12
13
          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);
          }

1
error(jqXHR, textStatus, errorThrown)

api.jquery.com http:/ / / / jquery.ajax


从jquery.com:

1
2
3
4
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.

如果你想你可以使用全局处理程序:

1
2
3
.ajaxStart(), .ajaxStop(),
.ajaxComplete(), .ajaxError(),
.ajaxSuccess(), .ajaxSend()