$.ajax 实用程序中的 JQuery 错误选项

Posted

技术标签:

【中文标题】$.ajax 实用程序中的 JQuery 错误选项【英文标题】:JQuery error option in $.ajax utility 【发布时间】:2010-09-10 20:52:48 【问题描述】:

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

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

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

感谢您的意见

【问题讨论】:

【参考方案1】:

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

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:completestatus为HTTP状态编号,即404:未找到,500:服务器错误,200:正常responseText是来自服务器的响应 - 这可能是来自 Web 服务的文本或 JSON,或来自 Web 服务器的 html

【讨论】:

【参考方案2】:

查看jQuery源码,除了success,还有四种返回状态:

超时 - 当你指定 超时时间已过 错误 - http 错误,例如 404 未修改 - 请求时 资源自上次以来未修改 请求 parsererror - 当一个 xml/json 响应是 不好

【讨论】:

还有当 dataType: "json" 且 json 格式不正确时【参考方案3】:

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

 if (error = "timeout") 

应该有更多的等号:

 if (error == "timeout") 

【讨论】:

很好,编辑了帖子。自从我发布这个已经有一段时间了,但我认为这只是一个错字。感谢您的回复【参考方案4】:

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

【讨论】:

您能否更新您的答案以解释可以从异常对象获得的有用调试信息【参考方案5】:

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

【讨论】:

抱歉,我的问题不清楚。我解决了我的“解析器错误”问题...我想知道可以从错误中确定哪些其他信息:选项

以上是关于$.ajax 实用程序中的 JQuery 错误选项的主要内容,如果未能解决你的问题,请参考以下文章

jQuery选项卡中的FullCalendar最初不通过ajax加载

当 Ajax 响应来自使用 select2 的 laravel 控制器时,如何检查 JQuery 附加选项中的条件?

jQuery.ajax() 方法的异步选项已弃用,现在怎么办?

JQuery中ajax使用方法

6月份那些最实用的 jQuery 插件专辑

使用ajax jquery php基于多选选项过滤数据