$.Ajax实用程序中的jquery错误选项

$.Ajax实用程序中的jquery错误选项

JQuery error option in $.ajax utility

文档指出,error:option函数将使xhr实例、状态消息字符串(在本例中始终为error)和从xhr实例返回的可选异常对象(book:jquery-in-action)可用。

使用下面的代码(在$.ajax调用中),我可以确定我有一个"parserror"和一个"timeout"(自从我添加了timeout:option)错误。

1
error: function(request, error){}

您在错误选项中评估的其他内容是什么?是否包括可选的异常对象?

编辑:其中一个答案表示所有返回错误……进一步了解XHR实例和异常对象中的值(用于调试)将有所帮助。

这是一个完整的$.Ajax调用:

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
$.ajax({
 type:"post",
 url:"http://myServer/cgi-bin/broker" ,
 dataType:"text",
 data: {
 '_service' : 'myService',
 '_program' : 'myProgram',
 'start' : start,
 'end' : end
 },
 beforeSend: function() {
  $("#loading").removeClass("hide");
 },
 timeout: 5000,
 error: function(request,error) {
  $("#loading").addClass("hide");
  if (error =="timeout") {
   $("#error").append("The request timed out, please resubmit");
  }
  else {
   $("#error").append("ERROR:" + error);
  }
  },
  success: function(request) {
   $("#loading").addClass("hide");
   var t = eval("(" + request +")" ) ;
  } // End success
}); // End ajax method

谢谢你的意见


我发现请求比错误更有用。

1
2
3
4
5
error:function(xhr,err){
    alert("readyState:"+xhr.readyState+"
status:"+xhr.status);
    alert("responseText:"+xhr.responseText);
}

xhr是xmlhttprequest。
readystate值为1:loading、2:loaded、3:interactive、4:complete。
status是HTTP状态号,即404:未找到,500:服务器错误,200:确定。
ResponseText是来自服务器的响应——可以是来自Web服务的文本或JSON,也可以是来自Web服务器的HTML。


查看jquery源代码,除了成功之外,还有四种返回状态:

  • 超时-当您指定超时
  • 错误-HTTP错误,如404
  • 未修改-请求时自上次以来未修改资源请求
  • ParserError-当XML/JSON响应为坏的


这是一个旁白,但我认为你提交的代码中有一个错误。线:

1
 if (error ="timeout") {

应该有更多的等号:

1
 if (error =="timeout") {

传递给错误函数的第二个参数是字符串"timeout""parserror""error"或"notmodified"。第三个是异常对象。此对象有助于调试。


你确定回答正确吗?分析错误意味着行中正在计算的数据有问题var t = eval("(" + request +")" ) ;


推荐阅读