2011-11-28 44 views
0

我试图调试一个页面,通过ajax发送附件的电子邮件,当PHP踢出一个错误时,我得到“解析错误”,因为错误不是通过JSON发回。无论如何要包装PHP错误,所以我可以提醒他们,看看到底PHP的错误是什么?通过JSON发送PHP错误

我希望在js alert中看到的是,如果未使用ajax提交此表单,则会在屏幕上看到的结果是相同的。

+0

打开Firebug/Chrome Inspector并检查Network选项卡。 – kapa

回答

5

使用HTTP状态码。简单而干净。

在客户端:您可以使用常见JavaScript框架的成功和失败回调来处理HTTP状态。

在服务器端:使用异常并使用catch块处理它们。在catch块中设置HTTP状态码并回显异常消息。或者使用花式不多的set_error_handler()函数,并在回调函数中设置状态码和错误消息。

+0

虽然这是一种处理错误的好方法,但它可能不会提供所需的粒度(如果存在多个可能的错误...) – zrvan

+0

@zrvan:您仍然可以将错误信息传递给HTML正文。 – CodeZombie

+0

是的,我认为这会有所帮助,但我想提醒完全相同的错误PHP抛出。就像“41号线爆炸了”。 – lardlad

1
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:回调。