34

文档表明错误:选项函数将提供:XHR 实例、状态消息字符串(在这种情况下总是错误)和从 XHR 实例返回的可选异常对象(书籍:JQuery in Action)

使用以下(在 $.ajax 调用中)我能够确定我有一个“解析器错误”和一个“超时”(因为我添加了超时:选项)错误

error: function(request, error){}

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

编辑:答案之一表明所有返回错误...了解更多有关 XHR 实例和异常对象中的价值(用于调试)的信息会有所帮助

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

$.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

感谢您的输入

4

5 回答 5

43

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

error:function(xhr,err){
    alert("readyState: "+xhr.readyState+"\nstatus: "+xhr.status);
    alert("responseText: "+xhr.responseText);
}

xhr是 XmlHttpRequest。
readyState值是 1:loading, 2:loaded, 3:interactive, 4:complete
status是 HTTP 状态编号,即 404: not found, 500: server error, 200: ok
responseText是来自服务器的响应 - 这可以是来自 Web 服务的文本或 JSON,或来自 Web 服务器的 HTML。

于 2009-12-24T03:26:33.790 回答
22

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

  • timeout - 超过您指定的超时时间
  • error - http 错误,如 404
  • notmodified - 自上次请求以来未修改请求的资源时
  • parsererror - 当 xml/json 响应错误时
于 2008-09-18T19:53:23.567 回答
4

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

 if (error = "timeout") {

应该有更多的等号:

 if (error == "timeout") {
于 2009-11-05T17:28:55.937 回答
1

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

于 2008-09-18T19:53:31.977 回答
0

你确定这个回答是正确的吗?解析错误意味着在线评估数据存在错误 var t = eval( "(" + request + ")" ) ;

于 2008-09-18T19:19:26.270 回答