当出现用户/表单validation错误时,我应该向AJAX请求发送什么响应/状态代码?

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

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

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

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

使用4xx状态代码的有效负载就可以了。 HTTP规范中没有任何内容可以解释。

如果您想要比400更具体的东西,请查看422 Unprocessable Entity 。

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

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

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