Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/387.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如果服务器以401/402状态响应,是否会触发Deferred.fail()?_Javascript_Jquery_Http - Fatal编程技术网

Javascript 如果服务器以401/402状态响应,是否会触发Deferred.fail()?

Javascript 如果服务器以401/402状态响应,是否会触发Deferred.fail()?,javascript,jquery,http,Javascript,Jquery,Http,文档中说,拒绝延迟对象时会触发fail() 然而,这听起来相当模糊,我不能完全理解何时从HTTP的角度触发它。所有400/500状态代码最终会落入fail()处理程序吗?为清晰起见编辑: jQuery源代码中的这一行将告诉您jQuery如何尊重HTTP语义: isSuccess = status >= 200 && status < 300 || status === 304; issucess=status>=200&&status

文档中说,拒绝延迟对象时会触发fail()


然而,这听起来相当模糊,我不能完全理解何时从HTTP的角度触发它。所有400/500状态代码最终会落入fail()处理程序吗?

为清晰起见编辑:

jQuery源代码中的这一行将告诉您
jQuery
如何尊重HTTP语义:

    isSuccess = status >= 200 && status < 300 || status === 304;
issucess=status>=200&&status<300 | | status==304;

原始答案:

4xx和5xx是HTTP错误代码。jqueryajax将为所有这些应用程序触发一个失败事件

成功(2xx)响应不会失败。jQuery还将遵循重定向(3xx)状态代码,因此它们也不会被视为错误,除非它遵循的重定向产生4xx或5xx状态


正如carhlietfl在评论中指出的,如果来自服务器的响应不是您告诉jQuery期望的响应,那么成功(2xx)响应仍然可能触发失败事件-例如,如果您说
dataType:'json'
,并发回了
json
以外的内容(包括格式不正确的
json
)然后你失败了,回调也会被调用。

你可以试试看。黑盒测试没有解释它背后的逻辑和设计。
$是的。ajax
还有其他错误,如解析错误、超时、无连接会导致拒绝密切相关的问题/答案:不是100%正确大约200,例如,如果数据类型为json并且返回xml或html,则将有一个失败触发器。同样,不返回jsonp的jsonp请求也可能是错误的。这是我的错,没有以我希望的方式回答这个问题。在询问之前,我已经阅读了您提供的链接,但仍然不清楚jQuery中是否/如何尊重HTTP语义。非常感谢您花时间帮助我,使我获得了更多的选票,并表示感谢。@miushock-检查我编辑的答案,在
jQuery
源代码中找到回答您问题的行。