我的搜索让我相信这是为响应设置标题的问题。此应用程序是使用Zend框架构建的,这里是要设置的标头(此响应包含有关文件上载的信息):
$response
->setHeader('Expires', 'Mon, 26 Jul 1997 05:00:00 GMT')
->setHeader('Cache-Control', 'private, no-cache')
->setHeader('Pragma', 'no-cache')
->setHeader('Content-Disposition', 'inline; filename="files.json"')
->setHeader('X-Content-Type-Options', 'nosniff')
->setHeader('Content-type', 'application/json; charset=UTF-8');
这是“files.json”的内容: { “webpath”: “http://www.domain.com/avatar/38b/3ef/f8b/a4c62a71.jpg”, “的file_id”: “484”, “高度”:250, “宽度”:250} < / p>
编辑:我在IE的所有版本中遇到此问题,包括IE9。我也尝试使用'text / plain'作为Content-type,但没有用。同时修正了“私人”一词的拼写错误。
答案 0 :(得分:0)
当我返回json时,我在whateverAction()
中设置了以下内容: -
$this->getResponse()->setHttpResponseCode(200);
$this->getResponse()->setHeader('Content-Type', 'application/json');
$this->getResponse()->setBody($Json());
就是这样,没有别的,它适用于所有浏览器。无论如何我还可以测试所有这些,包括IE 9。
答案 1 :(得分:0)
如果浏览器要求您下载JSON文档,则没有任何问题。默认情况下,除非您安装了某个扩展程序(例如Firefox中的JSONView),否则浏览器不会显示内联类型正确的JSON。
如果您只想查看脚本创建的JSON,请使用此类扩展名或暂时使用文本内容类型(例如text/plain
或text/javascript
)。在其他情况下保持原样,因为JSON应该以适当的内容类型发送。
答案 2 :(得分:0)
您是否尝试将内容处置设置为“内联”(即删除'; filename =“files.json”')?
答案 3 :(得分:-2)
标题告诉IE下载文件。我会删除
->setHeader('Content-Disposition', 'inline; filename="files.json"')
因为我认为这会触发下载。
如果情况并非如此,我会首先删除所有标题,然后检查它们是否都写得正确(请参阅&#34;私有&#34;)并首先测试没有标题,然后添加它们一个接一个地找出哪一个触发你的问题。那么请写下它要进一步研究它。