使用HTTP 500内部服务器错误返回描述性错误消息

时间:2014-05-06 02:36:38

标签: php http-headers jqxhr

我试图向我的AJAX请求返回有用的错误消息,我可以使用客户端向用户显示。

我正在使用jQuery发出请求,如下所示:

$.ajax({
    url: 'myURL.php',
    data: { id: someId },
    type: 'POST',
    success: function(response) {
        // do something with response
    },
    error: function(jqXHR) {
        // here is where I want to do something with jqXHR.responseText
        // but how do I set that in PHP?
    }
});

如果我的PHP脚本中出现了一些错误,我使用以下标题:

header("HTTP/1.1 500 Internal Server Error");

所以我的问题是,如何在该标头中包含一些有用的错误消息,这些消息将被放到jqXHR的responseText属性中,然后我可以在我的jQuery错误回调中使用它?

感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

我通常构建一个JSON响应而不是xml,但这个想法应该是相同的。您可以在包含以下内容的数组中构建响应,而不是返回任何类型的服务器错误。

array('success'=>true);

array('success'=>false, 'message'=>"Couldn't do it because ..blah..");

然后,当我在success处理json时:

if(json['success']) { ... } //yay, it worked!  reload the page or something
else if(json['message']) alert(json['message']);
else alert('Unknown error');

这允许您的控制器向用户发送有意义的消息。或者您可以添加另一个数组键,如['error'],您可以使用浏览器的开发控制台进行检查。

您的方法可能会有所不同,返回可由jqXHR处理的内容,但这个想法足够相似。