我有一个ajax应用程序,它返回给定id的文章内容。所有请求都被发送到一个php文件,该文件从数据库获取文章内容并回复它。
现在,有问题:php文件将始终具有200 OK
状态。我希望它发送一些状态代码,表示该文章不存在。完全超出正常范围的东西(如100 000
或类似)。
我的问题是,是否可以使用php设置某些状态?
答案 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);
答案 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响应代码来操作以确定错误本身并向用户显示来自响应主体中服务器的一些文本和子状态;