jQuery和http标题:我需要哪些属性的消息?
问题描述:
下面的PHP脚本接收一个Ajax请求,并抛出如果所需的变量没有设置错误:jQuery和http标题:我需要哪些属性的消息?
<?php
if(!isset($_POST['id'])) {
header($_SERVER["SERVER_PROTOCOL"]." 400 Bad Request: id not set.");
exit;
}
//do stuff
?>
在我的JavaScript(jQuery的),我已经设置了一个默认的Ajax错误处理程序:
$(document).ready(function() {
$.ajaxSetup({
error: function(x, e){
if (x.status == 0) {
alert(' Check Network.' + x.responseText);
} else{
alert(x.status + ' ' + x.responseText);
}
}
});
});
我希望得到一个警告框,上面写着“400 Bad Request:id not set”。当我的400错误发生。目前,我只有“400”的提醒。我需要改变什么才能显示剩余的信息?通过这个代码部分显示
答
你的警告框:
alert(x.status + ' ' + x.responseText);
基本上,你显示:
- 状态代码
- 而身体反应,如果有是一个。
但你的PHP代码如下所示:
header($_SERVER["SERVER_PROTOCOL"]." 400 Bad Request: id not set.");
exit;
它发出了一个状态代码,但不输出任何东西 - 这意味着响应的主体为空。
你应该从你的PHP代码做回音,有一些身体在你的回应:
header($_SERVER["SERVER_PROTOCOL"]." 400 Bad Request");
echo "id not set";
exit;
的responseText
属性,在Javascript的一侧,包含了已发送到文本PHP端的标准输出。
发送到标准输出就是echo
写道;-)
答
<?php
if(!isset($_POST['id'])) {
header($_SERVER["SERVER_PROTOCOL"]." 400");
die("Bad Request: id not set.");
}
//do stuff
?>
这非常有意义。不过,我想知道是否有一个可用的属性可以保留标题行中的文本。 – dnagirl 2011-04-20 19:19:08
可能有一种方法可以获取标题*(除了状态行不是典型的标题 - 所以不能确定它会起作用)*,请参阅https://developer.mozilla.org/zh/XMLHttpRequest#getResponseHeader %28%29;但这种信息可能更好地放在身体中,无论如何, – 2011-04-20 19:22:01
看起来像'statusText'将是属性。但我会按照你的建议,并将错误文本放入正文中。 – dnagirl 2011-04-20 19:25:37