我有一个 ajax 应用程序,它返回具有给定 ID 的文章内容。所有请求都发送到一个 php 文件,该文件从数据库中获取文章内容并回显它。
现在,有一个问题:php 文件总是有200 OK
状态。我希望它发送一些状态代码,表示该文章不存在。完全超出通常范围的东西(类似100 000
或类似)。
我的问题是,是否可以使用 php 设置类似的状态?
我有一个 ajax 应用程序,它返回具有给定 ID 的文章内容。所有请求都发送到一个 php 文件,该文件从数据库中获取文章内容并回显它。
现在,有一个问题:php 文件总是有200 OK
状态。我希望它发送一些状态代码,表示该文章不存在。完全超出通常范围的东西(类似100 000
或类似)。
我的问题是,是否可以使用 php 设置类似的状态?
您可以使用 设置 HTTP 状态代码http_response_code
。您只能使用 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);
您可以使用http_response_code发回 404 状态代码。
另一种选择是将状态代码和要作为 JSON 响应返回的数据进行编码,并将其返回给浏览器。
$response = array(
'status' => 100001,
'result' => '<h1>Title...'
);
echo json_encode($response);
exit;
通常,您可以在 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 响应代码进行操作以确定错误本身,并向用户显示来自服务器的响应正文中的一些文本和子状态;