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));** } |
这是我不明白的错误。在函数中,我需要放置什么参数,这样我就可以使用在服务器中引发的错误消息。
所需的参数是在
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:
它实际上是在错误的对象看起来像这样
所以,你可以在自己的浏览器中查看此控制台,使用
1 2 3 4 | error: function (jqXHR, exception) { console.log(jqXHR); // Your error handling logic here.. } |
我们使用从本物业到
异常:
这是一个字符串变量,显示异常的类型。因此,如果我们要
Deprecation Notice: The
jqXHR.success() ,jqXHR.error() , andjqXHR.complete() callbacks are deprecated as of jQuery 1.8. To prepare
your code for their eventual removal, usejqXHR.done() ,jqXHR.fail() ,
andjqXHR.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() |