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"。第三个是异常对象。此对象有助于调试。
你确定回答正确吗?分析错误意味着行中正在计算的数据有问题