ajax应用程序的PHP自定义错误代码

时间:2013-11-01 15:25:58

标签: javascript php ajax

我有一个ajax应用程序,它返回给定id的文章内容。所有请求都被发送到一个php文件,该文件从数据库获取文章内容并回复它。

现在,有问题:php文件将始终具有200 OK状态。我希望它发送一些状态代码,表示该文章不存在。完全超出正常范围的东西(如100 000或类似)。

我的问题是,是否可以使用php设置某些状态?

3 个答案:

答案 0 :(得分:3)

您可以使用http_response_code设置HTTP状态代码。您只能使用1xx,2xx,3xx,4xx或5xx范围内的状态代码。您无法编写自己的状态代码。有关该问题的信息,请参阅此答案:https://stackoverflow.com/a/11871377

对于“文章不存在”的状态,您只需使用404 Not Found

http_response_code(404);

以下是HTTP状态代码列表:http://en.wikipedia.org/wiki/List_of_HTTP_status_codes

编辑http_response_code仅适用于PHP 5.4+。如果你没有PHP 5.4,你可以这样做:

header("HTTP/1.0 404 Not Found", TRUE, 404);

有关详情:https://stackoverflow.com/a/12018482

答案 1 :(得分:2)

您可以使用http_response_code发回404状态代码。

另一种选择是将状态代码和您想要作为JSON响应返回的数据编码并将其返回给浏览器。

$response = array(
   'status' => 100001,
   'result' => '<h1>Title...'
);
echo json_encode($response);
exit;

答案 2 :(得分:1)

通常,您可以在PHP中混合两种回答方式。最佳做法是发送正确的http状态代码,但是使用正确的代码(例如404找不到,409表示错误输入(仅示例)),您可以发送文本响应消息,如果它是标准答案。

所以你可以混合以前的答案(如果你需要的话):

http_response_code(404);
$response = array(
   'status' => 100001,
   'result' => 'Document was not found on server'
);
echo json_encode($response);
exit;

但我不确定在那种情况下你需要子状态。

在你的javascript中,你可以通过xhr响应代码来操作以确定错误本身并向用户显示来自响应主体中服务器的一些文本和子状态;