在ajax成功函数中,是否假定状态码为200?还是返回304或503会成功?
什么真正定义了成功?
答案 0 :(得分:2)
您是正确的,如果jQuery ajax收到HTTP 503 ...或500或404等,则将“失败”。它也(显然)在ECONNREFUSED或任何套接字级别(通信)错误时也会失败。
以下是文档:
https://api.jquery.com/jquery.ajax/
jQuery.ajax():执行异步HTTP(Ajax)请求。
jqXHR.fail(function( jqXHR, textStatus, errorThrown ) {});
错误回调选项的替代构造.fail() 方法替换不推荐使用的.error()方法。参考 deferred.fail()了解实施细节。
https://api.jquery.com/deferred.fail/
deferred.fail():添加拒绝Deferred对象时要调用的处理程序。
值得注意的是,连接可以成功...服务器可以返回HTTP 200 / OK ...,而您的jQuery Ajax调用可以 STILL 触发“失败”。
例如,如果您期望JSON响应,并且服务器返回XML:
https://www.mkyong.com/jquery/jquery-ajax-request-return-200-ok-but-error-event-is-fired/
其他信息:
要回答您的原始问题:是的,“成功”通常表示HTTP200。
但是,除了非HTTP 200之外,还有许多其他事情可以触发“失败”。
您甚至可以拥有HTTP 200,并且仍然“失败”(通过上面的链接)。
或者具有非HTTP 200并且仍然“成功”(例如HTTP 201)。
问:您的问题得到回答了吗?