[当PHP代码失败但发送200时如何处理AJAX?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[当PHP代码失败但发送200时如何处理AJAX?相关的知识,希望对你有一定的参考价值。
我有一个在前端使用javascript并在后端使用AJAX与php通信的应用程序。
如果代码遇到我要解决的错误,我确保将HTTP状态代码设置为200以外的其他值,并且可以正确处理],向用户清楚地显示发生了错误。
但是,如果出现意外错误或由于某些原因某个地方发生了严重错误,PHP代码仍将返回200并将回显该错误,而不是所需的输出。发生这种情况的一个简单示例是,如果PHP代码中出现语法错误(显然,在将代码推送到生产环境之前,应该始终对代码进行彻底的测试,因此用户永远不会遇到PHP语法错误,但是让我们使用这是错误的示例,该错误会从服务器生成类似的响应。)
我正在记录该错误以提供我的意思的示例,但通常此PHP解析错误responseText不会记录到控制台,只会出现红色的Chrome错误。
有没有一种捕获这些错误的方法,浏览器会记录这些错误并对其进行干净的响应,而不仅仅是使所有内容中断并处于半负载状态?响应PHP代码中出现的错误但仍返回默认200响应的最佳方法是什么?
潜在的解决方案?
我在编写此问题时想到的一个初步想法是,将每个PHP脚本的第一行的状态代码设置为500,然后如果遇到预期的错误,则将状态代码设置为适当的错误。代码,并且只有在我成功回显脚本结果之前,将状态代码设置回200。在大多数情况下,此方法有效,但对我来说似乎更像是一种解决方法或破解方法。涵盖所有完全意外的错误?行业标准是什么?
我确保将HTTP状态码设置为200以外的其他值,并且可以正确处理
很好。
PHP代码仍将返回200并回显错误
然后您的PHP配置错误。绝对不允许生产Web应用程序向最终用户写入默认错误消息。这是您的PHP配置存在的问题,只能在配置中进行设置(尽管可以在代码中覆盖它)。
假定您必须运行无法控制的代码库,那么我能想到的最明显的解决方案是使用自动前置脚本(即,不依赖于显式修改每个输入脚本)来设置自定义错误处理程序。在您的优质代码中,请始终在执行可能会出错的操作之前,将错误响应设置在处理程序可以读取错误响应的位置(可能是全局变量)。
以上是关于[当PHP代码失败但发送200时如何处理AJAX?的主要内容,如果未能解决你的问题,请参考以下文章