我尝试手动构建一个json字符串发送给客户机。

{'result':'hhh'}

当我使用
echo json_encode(array('result'=>'hhh'));

它完美地到达了。
但当我这么做的时候
echo "{'result':'hhh'}";

不是的
我发现这两个请求之间的唯一区别是第一个请求有:
Content-Length: 9    header

第二个(不起作用)
Content-Length: 16   header

两个字符串都应该是内容长度:16!!!我想这和zf和mootools的结合有关。

最佳答案

根据规范,json需要在键名和字符串值周围加双引号。

echo json_encode(array('result'=>'hhh'));

将输出
{"result":"hhh"}

此输出的长度为16字节,如下所示:
echo strlen(json_encode(array('result'=>'hhh')));

输出“16”。
任何遵循规范的json解码器在与您的手动回显json一起显示时都将失败或引发异常。

10-04 18:48