当存在用户/表单验证错误时,我应该向AJAX请求发送什么响应/状态代码?

时间:2011-07-15 00:03:26

标签: jquery ajax http

我正在创建我的Web应用程序的一个功能,用户可以“编辑就地”记录并使用jQuery通过AJAX提交表单。

当某人“ajax编辑”一条记录并且他们提交有效数据的表格时,我发送一个200状态代码,触发jQuery AJAX Success功能,然后忽略响应主体(因为它成功了,我不知道我需要它,并折叠表格。

当存在表单验证错误时,我发送400状态代码以触发jQuery错误方法,并在请求正文中指定哪些字段未验证。

在之前的StackOverflow问题中,有人提到我发送400状态代码并使用响应正文“似乎很奇怪”。我的方法不是最佳做法吗?在这种情况下你会建议我做什么?

3 个答案:

答案 0 :(得分:7)

对我来说,HTTP状态代码用于HTTP层的信令,而不是应用层。我会说对正确提交的错误数据的适当响应(如果你看到我的意思)是带有应用程序层错误代码的200。我为此使用JSON。我的请求总是返回一条小JSON消息,该消息总是有一个标志,指示应用程序级别的成功/失败。我的ajax调用包装器知道了这一点,并在适当的时候发送。

答案 1 :(得分:4)

使用4xx状态代码的有效负载就可以了。 HTTP规范中没有任何其他说法。

如果您想要比400更具体的内容,请查看422 Unprocessable Entity

答案 2 :(得分:-1)

我将返回带有(应用程序)错误页面的200或带有错误选项的原始页面,它会触发带有错误描述的信息面板。

原因是HTTP错误代码用于浏览器对Web服务器的响应,而不是Web应用程序。保持应用程序逻辑与浏览器和服务器相互通信时的情况分开。