2012-06-07 48 views
2

有人可以解釋這種行爲嗎?內容類型和json_encode()值

在這種情況下

header("Content-type: text/html"); 
echo json_encode("error_101"); 

它的工作原理。

在這種情況下,其他

header("Content-type: application/json"); 
echo json_encode("error_101"); 

它不工作(無限加載)。

但是,如果我將數組傳遞給json_encode,它將以兩種方式工作,所以此問題僅在json值爲時存在

這似乎是一個錯誤!

回答

2

json文本中最外面的數據類型必須是是數組或對象。

JSON語法

甲JSON文本是令牌的序列。這組令牌包括 六個結構字符,字符串,數字和三個字面 名稱。

JSON文本是一個序列化的對象或數組。

JSON-text = object/array 

- http://www.ietf.org/rfc/rfc4627.txt

如果你通過PHP的json_encode函數的字符串,則輸出它作爲一個JavaScript編碼字符串(而不是拋出一個錯誤)。我認爲這是一個錯誤。

大概無論如何,對這個腳本的HTTP請求都無法處理無效的JSON響應,但對無效的HTML有更好的錯誤恢復。