通过JSON发送PHP错误
我试图调试一个页面,通过ajax发送附件的电子邮件,当PHP踢出一个错误时,我得到“解析错误”,因为错误不是通过JSON发回。无论如何要包装PHP错误,所以我可以提醒他们,看看到底PHP的错误是什么?通过JSON发送PHP错误
我希望在js alert中看到的是,如果未使用ajax提交此表单,则会在屏幕上看到的结果是相同的。
使用HTTP状态码。简单而干净。
在客户端:您可以使用常见JavaScript框架的成功和失败回调来处理HTTP状态。
在服务器端:使用异常并使用catch
块处理它们。在catch
块中设置HTTP状态码并回显异常消息。或者使用花式不多的set_error_handler()
函数,并在回调函数中设置状态码和错误消息。
虽然这是一种处理错误的好方法,但它可能不会提供所需的粒度(如果存在多个可能的错误...) – zrvan
@zrvan:您仍然可以将错误信息传递给HTML正文。 – CodeZombie
是的,我认为这会有所帮助,但我想提醒完全相同的错误PHP抛出。就像“41号线爆炸了”。 – lardlad
致命错误通常无法处理*。
尝试改进你的代码,只是不做分析错误或其他致命错误。处理警告和通知很容易:http://php.net/manual/en/function.set-error-handler.php
*:这是可能的,但它需要很大的努力。
function json_error($msg) {
header('HTTP/1.1 500 ' . $msg);
die(json_encode(array('error' => $msg)));
}
json_error('something bad happened');
这将触发对JS侧error:
Ajax回调。
echo json_encode(array('anything' => 'really', 'any key' => 'any value'));
将触发success:
回调。
打开Firebug/Chrome Inspector并检查Network选项卡。 – kapa