jQuery ajax错误函数

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

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

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

DEMO FIDDLE


参数

jqXHR:

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

Ajax错误jqXHR对象

你也可以在你自己的浏览器控制台中使用console.log来查看这个error函数,如:

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

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

例外:

这是显示exceptiontypes的stringvariables。 所以,如果我们得到404错误, exception文本将只是“错误”。 同样,我们可能会得到“超时”,“中止”作为其他例外文本。


弃用通知:自jQuery 1.8起,弃用jqXHR.success()jqXHR.error()jqXHR.complete()callback。 要准备好代码以便最终删除它们,请改用jqXHR.done()jqXHR.fail()jqXHR.always()

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

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

希望它有帮助!

尝试这个:

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

如果您想通知您的前端有关validation错误,请尝试返回json:

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

你的asp脚本会返回:

 {"error": true} 
 error(jqXHR, textStatus, errorThrown) 

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

这里是你如何拉出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.'); } } 

你正在使用一个function

 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 }); 
  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); } 

来自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()