多年来,我使用以下表达式在JavaScript中测试xmlHttpRequest成功:
(xhr.status==200)
但是最近我遇到了一个REST服务,它为某些方法返回不同的成功代码(201
)。所以我打算把表达改为:
(xhr.status==200||xhr.status==201)
这是否涵盖了最常见的情况,还是我仍然遗失了什么?有没有更好的方法来测试xhr的成功?
答案 0 :(得分:3)
通过检查请求的readystate
是否等于xhr.DONE
(即4
,您可以验证HTTP请求是否已成功完成(即没有网络故障或基于原因的安全问题) 1}})。
确定网络成功的HTTP响应是否代表“成功”的应用程序级操作部分是每个应用程序的问题(应用程序是否响应了您的预期?),但2XX
状态代码分组在section 10 of RFC 2616为“成功”的HTTP响应。
因此,如果您想一般性地测试“成功”类型的响应,请测试200
和299
之间的状态,包括在内。
基于a comment @dfsq,jQuery also includes 304
as a possible "success" response,因为这意味着没有应用程序错误,并且资源没有任何变化。与其他3XX
响应不同,304
是终端,因此客户端已完成请求操作,无需在重定向中请求其他资源。