什么时候应该使用Content-Type为application/json?

3

我的服务器正在向客户端发送数据。

header('Content-type: application/json');
echo json_encode($jsondata);

头部有什么好处?它编码数据,但在我测试的各种浏览器中似乎没有任何视觉效果。我还看到它会破坏一个文件上传插件(我认为是Valum's,但不确定)。最后,如果我的服务器只返回true/false(或1/0、success/null),那么我是否仍然应该编码响应?

因此,总结我的问题,何时以及为什么Content-Type应该是application/json?


此外,如果下载的数据中包含NULL的一部分,是否会产生任何影响?换句话说,客户端会将该数据点接收为null还是"null"? - user1032531
3个回答

5
简单来说,每当您提供JSON数据时,内容类型应该是application/json。这只是正确声明数据的问题,就像汽车上有正确的车牌或薯片袋上有成分清单一样。
是否在浏览器中有数据的可视化表示是另一个问题,这不是提供内容类型的主要原因。(我不知道任何一款浏览器会为JSON数据显示漂亮的树形视图,但这将很美妙!)
最后,如果我的服务器只返回true/false(或1/0、success/null),我还需要对响应进行编码吗?
这取决于客户端的期望,但通常最好保持一致,即如果您的其他服务也使用JSON编码,则始终对其进行JSON编码。

谢谢Pekka,那么,如果我的客户端脚本只是if(ajax_response==1) {do_something},还需要编码吗? - user1032531
如果响应永远不会是JSON,而只是0或1,那么我想这并不是真正必要的。但是,如果你的其他Ajax源使用JSON,为了保持一致性,你可能也希望对它进行编码。这实际上取决于你的个人喜好。 - Pekka
谢谢Pekka。尽管似乎没有任何好处,但我会按照您的建议去做,因为这是正确的事情。我发布这个问题的整个目的是确定是否这样做可以防止null显示为“null”。 - user1032531
@user 是的。可以说一个小优点是,如果你输出 null,可能会隐藏 PHP 报错。而包含 null 的 JSON 结构则清楚地表明服务正在工作,响应为空。但这实际上是个人偏好问题。 - Pekka

0

它应该强制浏览器尝试将其下载为.json文件。 JavaScript(例如JQuery)将解析它作为JSON而不是text / html。


0

当数据实际上是JSON格式时,我倾向于使用header。也就是说,它看起来像{...}[...](或者,在这种情况下,它是使用json_encode提供的)。

此外,它可能对浏览器没有任何影响,因为大多数浏览器(没有插件)将其呈现为纯文本,但确实使返回的数据更简洁。而且,像jQuery这样的库会使用此header来处理响应(如果在调用中没有手动提供它)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接