2011-04-20 76 views
1

下面的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”的提醒。我需要改变什么才能显示剩余的信息?通过这个代码部分显示

回答

1

你的警告框:

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写道;-)

+0

这非常有意义。不过,我想知道是否有一个可用的属性可以保留标题行中的文本。 – dnagirl 2011-04-20 19:19:08

+1

可能有一种方法可以获取标题*(除了状态行不是典型的标题 - 所以不能确定它会起作用)*,请参阅https://developer.mozilla.org/zh/XMLHttpRequest#getResponseHeader %28%29;但这种信息可能更好地放在身体中,无论如何, – 2011-04-20 19:22:01

+0

看起来像'statusText'将是属性。但我会按照你的建议,并将错误文本放入正文中。 – dnagirl 2011-04-20 19:25:37

1
<?php 
if(!isset($_POST['id'])) { 
    header($_SERVER["SERVER_PROTOCOL"]." 400"); 
    die("Bad Request: id not set."); 
} 
//do stuff 
?> 
相关问题