2011-01-25 273 views

回答

3

让我们考虑一下IE。假设您有一个隐藏的iFrame,用于请求文件下载。例如

<iframe src="getFile?id=123"> 

现在,服务器可以发送JSON编码的错误消息像

{ 
    error: 'File 123 does not exist', 
    retryLater: false 
} 

如果错误消息为application/json,会出现一个下载对话框发送,因为JSON文本是错误的为实际的文件。

另一方面,MIME类型text/plain将导致消息在iFrame中呈现,您可以将其解压缩,并将其转换为特殊的弹出窗口或使用JScript的东西。


(编辑)

真实的例子:EXTJS Fileupload - Problem with IE8 security bar

+0

感谢pumbaa80,并且考虑到Eric在下面说了什么,它看起来像使用text/x-json可能是最好的。 – 2011-01-30 21:19:38

1

这已经讨论之前:

What is the correct JSON content type?

阻断MIME类型的任何防火墙都将导致与任何AJAX风格的Web应用程序的问题,所以我真的不担心。

+0

感谢您的评论,是的,我看你指出dicussion。我正在寻找更多真实世界的具体例子,一些SO用户可能有经验。像Pumbaa80下面的答案。很高兴知道防火墙。谢谢 – 2011-01-26 09:32:09

1

已经刚刚与IE8一个长期的斗争自己对这个我发现,如果你正在装载JSON到iframe的文本/ plain,IE8将把它包装在一个标签中。如果您随后使用innerHTML获取内容并尝试将其解析为json,则会失败。

我最后不得不发送内容为text/html,这似乎只是完全错误的,但在IE浏览器的工作原理和似乎并没有乱了其他浏览器更现代的AJAX处理。

相关问题