2013-11-01 33 views
1

我有一個ajax應用程序,它返回給定id的文章內容。所有請求都被髮送到一個php文件,該文件從數據庫中提取文章內容並回顯。ajax應用程序的php自定義錯誤代碼

現在有問題了:php文件總是會有200 OK的狀態。我希望它發送一些狀態碼,表示該文章不存在。一些完全不在正常範圍內的東西(如100 000或類似的東西)。

我的問題是,是否有可能使用php設置一些狀態?

回答

3

您可以使用http_response_code來設置HTTP狀態碼。您只能使用1xx,2xx,3xx,4xx或5xx範圍內的狀態碼。你不能編寫你自己的狀態代碼。看到這個答案的信息:https://stackoverflow.com/a/11871377

對於「物品不存在」的狀態,你可以簡單地使用404 Not Found

http_response_code(404); 

這裏是HTTP狀態代碼的列表:http://en.wikipedia.org/wiki/List_of_HTTP_status_codes

編輯http_response_code僅適用於PHP 5.4+。如果你沒有PHP 5.4,你可以這樣做:在此

header("HTTP/1.0 404 Not Found", TRUE, 404); 

更多信息:https://stackoverflow.com/a/12018482

2

你可以使用回送http_response_code 404個狀態碼。

另一種選擇是將狀態碼和要返回的數據編碼爲JSON響應並將其返回給瀏覽器。

$response = array(
    'status' => 100001, 
    'result' => '<h1>Title...' 
); 
echo json_encode($response); 
exit; 
+0

這個建議比發送404 http代碼更靈活,因爲您可以包含錯誤消息,狀態代碼或任何需要包含在JSON中的內容,因此您的應用會通知用戶。 – gontrollez

1

一般來說,你可以混合使用PHP的兩種回答方式。最好的做法是發送正確的http狀態碼,但使用正確的代碼(如404未找到,409錯誤輸入(僅舉例)),您可以發送文本響應消息,如果它是標準答案。

所以,你可以混合以前的答案(如果你需要它):

http_response_code(404); 
$response = array(
    'status' => 100001, 
    'result' => 'Document was not found on server' 
); 
echo json_encode($response); 
exit; 

,但我不知道你們需要的子狀態在這種情況下。

在您的JavaScript中,您可以通過xhr響應代碼來操作來確定錯誤本身並向用戶顯示來自服務器的響應正文中的一些文本和子狀態;

相關問題