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

时间:2020-03-06 14:22:53  来源:igfitidea点击:

文档指出error:option函数将可用:XHR实例,状态消息字符串(在这种情况下始终为错误)和从XHR实例返回的可选异常对象(本书:JQuery in Action)

使用以下命令(在$ .ajax调用中),我可以确定我遇到了" parsererror"和" timeout"(因为我添加了timeout:option)错误

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

感谢输入

解决方案

我们确定回答正确吗?解析错误意味着在行中评估数据存在某些错误
var t = eval("(" + request +")");`

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

  • 超时-超过指定的超时时间
  • 错误-http错误,例如404
  • 未修改-自上次请求以来未修改请求的资源时
  • parsererror-xml / json响应错误时

传递给错误函数的第二个参数将是字符串"超时"," parserror","错误"或者"未修改"。第三个将是异常对象。该对象对于调试很有帮助。

顺便说一句,但是我认为我们提交的代码中存在错误。该行:

if (error = "timeout") {

应该有更多的平等迹象:

if (error == "timeout") {

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

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

xhr是XmlHttpRequest。
readyState值为1:正在加载; 2:已加载; 3:互动; 4:已完成。
status是HTTP状态编号,即404:未找到; 500:服务器错误; 200:确定。
responseText是来自服务器的响应,可以是来自Web服务的文本或者JSON,也可以是来自Web服务器的HTML。