返回成功/失败的AJAX响应和HTTP状态代码

时间:2010-07-18 01:10:26

标签: ajax http-status-codes

假设我有一个StackOverflow-esque网站。我想在某人的回答下发表评论。有两件事可能发生:

1)评论帖是成功的。我将实际格式化的DIV作为一些JSON响应返回,设置JSON。

{
    "Success": true, 
    "Data": "some escaped html to inject"
}

2)评论帖不成功。我将错误作为JSON响应返回。

{
    "Success": false, 
    "Data": "You can only post every 15 seconds"
}

这是正确的做事方式吗?我注意到当评论帖不成功时,StackOverflow正在返回Apache 500 Internal error代码,我觉得这很愚蠢。

对于实际错误的服务器而言,不是500 Internal error保留,而不仅仅是因为某些评论验证失败了吗?

2 个答案:

答案 0 :(得分:2)

我同意使用500 Internal error有点奇怪,但您可以使用多种适用的响应代码来满足您的需求。

这里有一个很好的清单:http://en.wikipedia.org/wiki/List_of_HTTP_status_codes

示例:

用户未登录,需要登录才能发表评论。发送:401 Unauthorized

用户已登录,尝试对已关闭的主题发表评论。发送403 Forbidden400 Bad Request

答案 1 :(得分:1)

我同意500并不理想。它应该是4xx状态,因为它是客户端的问题。 409是一种可能的选择。它并不完全合适,但确实包含“此代码仅在预期用户可能能够解决冲突并重新提交请求的情况下才允许”;他们可以通过等待解决冲突。