2011-04-20 79 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 
?> 
相關問題