场景:
Ajax调用PHP脚本。总是需要JSON格式的答案。
问题:
在某些情况下(异常,错误等),不会返回Json,而是返回简单的纯文本。
问题:
如何强制PHP始终返回JSON,无论如何?但是没有关闭所有错误和警告?
我想的是:
如何强制解析错误(如解析错误)以输出JSON格式?
答案 0 :(得分:1)
对于PHP 5.x :
set_exception_handle
抓住例外情况
set_error_handler
发现错误
无法捕获解析错误。来自docs:
使用用户定义的函数无法处理以下错误类型:E_ERROR,E_PARSE,E_CORE_ERROR,E_CORE_WARNING,E_COMPILE_ERROR,E_COMPILE_WARNING和大多数E_STRICT
对于PHP 7.x :
所有错误都是可捕获的,因此您可以将您的php脚本包装在
中try {
// your app here
} catch (Throwable $t) {
// convert it to json
}
对于任何php版本:
无法处理直接从网络服务器发送的回复,例如404
,504
等等。
您可以做的最好的事情是检查javascript中的响应代码,并仅处理200
个响应,您可以在php脚本中完美控制这些响应。