1

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

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

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

4

3 回答 3

3

您可以使用 设置 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);

有关此的更多信息:https ://stackoverflow.com/a/12018482

于 2013-11-01T15:30:28.307 回答
2

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

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

$response = array(
   'status' => 100001,
   'result' => '<h1>Title...'
);
echo json_encode($response);
exit;
于 2013-11-01T15:35:56.940 回答
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 响应代码进行操作以确定错误本身,并向用户显示来自服务器的响应正文中的一些文本和子状态;

于 2013-11-01T15:47:45.080 回答