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

标签 javascript php error-handling

我有一个在前端使用JavaScript并在后端使用AJAX与PHP通信的应用程序。

如果代码遇到我认为的错误,,请确保将HTTP状态代码设置为200以外的其他值,并在JavaScript中正确处理,以向用户清楚地显示发生了错误。

但是,如果出现意外错误或由于某些原因某处出现严重错误,则PHP代码仍将返回200并回显该错误,而不是所需的输出。发生这种情况的一个简单示例是,如果PHP代码中存在语法错误(显然,在将代码推送到生产环境之前,应该始终对代码进行彻底的测试,这样用户就永远不会遇到PHP语法错误,但是让我们将其用作从服务器生成类似响应的错误示例。)

An example of an error
我正在记录该错误以给出我的意思的示例,但通常此PHP解析错误responseText不会记录到控制台,只会出现红色的Chrome错误。

有没有一种方法可以捕获这些错误,使浏览器可以记录日志并对用户做出清晰的响应,而不仅仅是一切都中断并处于半负载状态?响应PHP代码中发生的错误但仍返回默认200响应的最佳方法是什么?

一个潜在的解决方案?

我在编写此问题时想到的一个初步想法是,将每个PHP脚本的第一行的状态代码设置为500,然后如果遇到预期的错误,则将状态代码设置为适当的错误代码,仅在我成功回显脚本结果之前,将状态码设置回200。在大多数情况下,此方法有效,但对我来说似乎更像是一种解决方法或破解方法。所有完全意外的错误?行业标准是什么?

最佳答案

I make sure to set the HTTP status code to something other than 200 and I handle it appropriately



那很好。

the PHP code will still return 200 and will echo the error



然后您的PHP配置错误。绝对不允许生产Web应用程序向最终用户写入默认错误消息。这是您的PHP配置的问题,只能在配置中设置(尽管可以在代码中覆盖它)。

假设您必须运行无法控制的代码库,那么我能想到的最明显的解决方案是使用自动前置脚本(即不依赖于显式修改每个输入脚本)来设置自定义错误处理程序。在您的优质代码中,始终在执行可能会出错的操作之前,将错误响应设置在处理程序可以读取错误响应的位置(可能是全局变量)。

关于javascript - PHP代码失败但发送200时如何处理AJAX?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61806682/

相关文章:

javascript - 关于命名空间下静态类的问题

javascript - Jquery 将 div 动画化为 100% 高度和宽度

php - 从 URL Laravel 5.3 中删除 public

php - 使用 php 将图像插入 mysql 不起作用

jquery - MVC 与 JQuery : handling Session Expire

python - 使用python打开txt文件时出现FileNotFoundError

php - 处理重复条目的错误 - MySQL 和 PHP

javascript - Materializecss 的基本可折叠示例不起作用

javascript - 动态更改某些数据绑定(bind)数据列表项的光标样式?

php - 对于在 APACHE 上运行的 PHP,如何保护 LAN 中的 Windows 机器?