Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使PHP始终使用JSON响应,即使在输出错误时也是如此_Php_Json_Error Handling - Fatal编程技术网

使PHP始终使用JSON响应,即使在输出错误时也是如此

使PHP始终使用JSON响应,即使在输出错误时也是如此,php,json,error-handling,Php,Json,Error Handling,情景: Ajax调用PHP脚本。答案应始终为JSON格式 问题: 在某些情况下(异常、错误等),不返回Json,只返回简单的纯文本 问题: 我怎样才能强制PHP不管发生什么都返回JSON?但不关闭所有错误和警告 我想到的是: 设置错误处理程序 设置异常处理程序 如何强制一些错误(如解析错误)输出JSON格式 PHP5.x的: set\u exception\u handle捕获异常 设置错误处理程序以捕获错误 无法捕获解析错误。从: 用户定义的函数无法处理以下错误类型:E_错误、E_解析、E

情景:

Ajax调用PHP脚本。答案应始终为JSON格式

问题:

在某些情况下(异常、错误等),不返回Json,只返回简单的纯文本

问题:

我怎样才能强制PHP不管发生什么都返回JSON?但不关闭所有错误和警告

我想到的是:

  • 设置错误处理程序
  • 设置异常处理程序

如何强制一些错误(如解析错误)输出JSON格式

PHP5.x的
set\u exception\u handle
捕获异常
设置错误处理程序以捕获错误

无法捕获解析错误。从:

用户定义的函数无法处理以下错误类型:E_错误、E_解析、E_核心错误、E_核心警告、E_编译错误、E_编译警告和大多数E_错误

对于PHP7.x

所有错误都是可捕获的,因此您可以将php脚本封装在

try {
    // your app here
} catch (Throwable $t) {
    // convert it to json
}
对于任何php版本

无法处理直接从web服务器发送的响应,例如
404
504


您可以做的最好的事情是检查javascript中的响应代码,并且只处理
200个
响应,您可以在php脚本中完全控制这些响应。

在ajax调用中使用contentType对于异常,您可以确保将所有代码包装在try中,捕获块并确保在捕获任何内容时输出JSON。在可能的情况下,您应该始终检查错误并进行相应的处理。如果遇到错误,您可以进一步抛出异常,然后在catch块中捕获并处理这些错误。您可以使用try…catch…finally块。更多信息请参阅。