0

我有一个返回JSON数据的 php API,当我尝试JSON从我的应用程序接收数据时,出现以下错误:

"Expected content type {(\n    \"text/json\",\n    \"application/json\",\n    \"text/javascript\"\n)}, got text/html";

您可能会回答说 php API 没有返回有效的 JSON,好吧,我在 Json Lint 上检查了它,它是一个有效的 JSON,而且标头设置为JSON

    header( 'Content-Type: text/json' );
    echo '{"Response":'.json_encode($arr).'}';

我还检查了 MAMPmime.types文件,它正确地包含了 JSON mime 类型。

我唯一怀疑的是,当我通过浏览器调用 API 时,我得到了预期的 JSON,但是当显示页面的源代码时,它在开头显示为 2 个空行。如下所示。

1-   
2-
3-    {"Response":[{"Product ID":"12037","Product Title":"RIng 14K Cloud 9","Product Description":"RIng 14K Cloud 9","Product Wholsale Price":"$255","Product Sale Price":"$460","Category Id":"55","Category Name":"Rings","Product Image":"http:\/\/192.163.1.87:8888\/xxxxxx\/wp-content\/uploads\/2012\/12\/150101.jpg","Product Sub Images":["http:\/\/192.163.1.87:8888\/xxxxx\/wp-content\/uploads\/2012\/12\/150101.jpg"],"SKU":"150101-50","Quantity":"1","Size":"50","Color":"Y","Manufacturer":"xxxxxx"},{"Product ID":"12039","Product Title":"Ring 14K Cloud 9","Product Description":"Ring 14K Cloud 9","Product Wholsale Price":"$255","Product Sale Price":"$460","Category Id":"55","Category Name":"Rings","Product Image":"http:\/\/192.163.1.87:8888\/xxxxx\/wp-content\/uploads\/2012\/12\/150101.jpg","Product Sub Images":["http:\/\/192.163.1.87:8888\/xxxxx\/wp-content\/uploads\/2012\/12\/150101.jpg"],"SKU":"150101-52","Quantity":"1","Size":"52","Color":"Y","Manufacturer":"xxxxxx"}]}

这是否与 php 代码或 MAMP 服务器中的任何内容有关?提前谢谢。

4

2 回答 2

1

您的输出开头有两个空行。一旦输出了某些内容,您就不能再使用该header()函数来更改任何标题。

在某些文件的 php 打开/关闭标签之前或之后,您可能会遇到一些空格问题。确保<?php每个文件上的标签是文件中的第一件事;检查文件编码;不要在 php 结束标记后留下尾随空格,甚至?>从文件末尾删除所有结束标记。

于 2013-03-27T22:20:49.113 回答
0

另外,我相信 JSON 的正确标头类型是 application/json:

header('Content-Type: application/json');

如果使用 JSONP,它应该是 application/javascript:

header('Content-Type: application/javascript');
于 2013-03-27T22:34:35.057 回答