AJAX调用的自定义PHP错误

时间:2011-04-12 15:50:15

标签: php jquery ajax

我正在构建一个Web应用程序,并且想知道如何使用我的AJAX调用来处理错误。例如,如果用户输入某种无效的数据(错误的电子邮件地址,用户已经存在),我希望能够从PHP中抛出错误。

我在这里看到http://php4every1.com/tutorials/jquery-ajax-tutorial/你可以使用JSON对象并处理来自JQuery的Success函数的错误报告,但这似乎不是正确的方法。对我来说,当出现错误时应该使用jQuery的错误函数。我想我是那种事情的坚持者。

以下是我现在正在做的事情。

//In my PHP file called from JQuery
function error($msg) {
    header("HTTP/1.0 555 ".$msg);
    die();
}
//Then that error is handled accordingly from JQuery

所以我创建了一个555的错误代码 - 它没有被定义为任何东西 - 并且在我自己的自定义错误消息上添加了。这是正确的方法吗?我应该只使用JSON吗?必须有一种标准的方式来发送这样的错误信息,对吗?

如果您需要查看更多我的代码以获得更好的想法,整个项目都在github:https://github.com/josephwegner/fileDrop。相关文件为config/phpFuncts.php

3 个答案:

答案 0 :(得分:6)

我只使用一个JSON对象和一个200的HTTP标头。请求本身没有任何问题,并且您的服务器按预期运行 - 错误位于抽象的另一层。

答案 1 :(得分:2)

400的{​​{1}}系列表明该请求存在问题。我将响应代码设置为400,并将响应正文中的错误消息列表包含为JSON。

答案 2 :(得分:2)

我讨厌使用HTTP状态代码来指示失败。应该为实际的HTTP级错误保留HTTP代码,并且应该通过JSON结构发回与AJAX请求相关的错误。

e.g。

$data = array()
if (some big ugly computation fails) {
   $data['errorcode'] = -123;
   $data['error'] = true;
   $data['success'] = false;
   $data['errormessage'] = 'some helpful error message';
} else {
   $data['success'] = true;
   $data['error'] = false;
   $data['response'] = 'whatever you wanted to send back....';
}
echo json_encode($data);

然后在客户端

if (data.error) {
   alert('Request blew up: ' + data.errormessage);
}