Content-type和json_encode()值

时间:2012-06-07 14:32:37

标签: php http-headers json

有人可以解释这种行为吗?

在这种情况下:

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

它有效。

在另一个案例中:

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

它不起作用(无限加载)。

但是如果我将一个数组传递给json_encode,它会以两种方式工作,所以这个问题只存在只有json值

这似乎是一个错误!

1 个答案:

答案 0 :(得分:2)

json文本中最外层的数据类型必须是一个数组或对象。

  

JSON语法

     

JSON文本是一系列令牌。这组令牌包括   六个结构字符,字符串,数字和三个字面值   名。

     

JSON文本是序列化对象或数组。

  JSON-text = object / array

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

如果您将PHP的json_encode函数传递给字符串,那么它会将其作为JavaScript编码的字符串输出(而不是抛出错误)。我认为这是一个错误。

据推测,无论是对此脚本发出HTTP请求,都会遇到无效的JSON响应问题,但对于无效的HTML有更好的错误恢复。