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

Posted

技术标签:

【中文标题】ajax应用程序的php自定义错误代码【英文标题】:php custom error codes for ajax app 【发布时间】:2013-11-12 20:00:59 【问题描述】:

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

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

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

【问题讨论】:

【参考方案1】:

您可以使用http_response_code 设置HTTP 状态代码。您只能使用 1xx、2xx、3xx、4xx 或 5xx 范围内的状态代码。您无法编造自己的状态代码。有关这方面的信息,请参阅此答案:https://***.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://***.com/a/12018482

【讨论】:

【参考方案2】:

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

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

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

【讨论】:

此建议比发送 404 http 代码灵活得多,因为您可以在 JSON 中包含错误消息、状态代码或您需要包含的任何内容,因此您的应用程序会通知用户。【参考方案3】:

通常您可以在 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 响应代码进行操作以确定错误本身并向用户显示来自服务器的响应正文中的一些文本和子状态;

【讨论】:

以上是关于ajax应用程序的php自定义错误代码的主要内容,如果未能解决你的问题,请参考以下文章

PHP Catch没有捕获自定义异常处理程序的异常

PHP自定义函数判断是否为GetPost及Ajax提交的方法

使用插入查询 CI PHP Mysql Ajax

Ajax自定义函数在wordpress中返回0

PHP:自定义错误处理程序 - 处理解析和致命错误

[当PHP代码失败但发送200时如何处理AJAX?