3

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

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

标题有什么好处?它对数据进行编码,但在我测试的各种浏览器中似乎没有任何视觉效果。我还看到它破坏了一个文件上传插件(我认为是 Valum,但不记得了)。最后,如果我的服务器只返回真/假(或 1/0,或成功/空),我还应该对响应进行编码吗?

那么,回顾一下我的问题,Content-Type 何时以及为什么应该是 application/json?

4

3 回答 3

5

很简单:内容类型应该是application/json您提供 JSON 数据的任何时候。这只是正确声明数据的问题,例如在您的汽车上放置正确的车牌或在一袋薯片上放置配料表。

浏览器中是否有数据的可视化表示是另一个问题,这不是您提供内容类型的主要原因。(我知道没有浏览器可以为 JSON 数据显示漂亮的树形视图。不过会很好!)

最后,如果我的服务器只返回真/假(或 1/0,或成功/空),我还应该对响应进行编码吗?

这取决于客户的期望,但最好的策略通常是在您的输出中保持一致,即如果您的其他服务也使用 JSON 编码,则始终对其进行 JSON 编码。

于 2012-10-18T12:51:15.577 回答
0

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

于 2012-10-18T12:52:11.910 回答
0

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

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

于 2012-10-18T12:52:34.690 回答