Che*_*eso 161 ajax asp.net-mvc jquery internet-explorer asp.net-ajax
在调试使用AJAX的jQuery应用程序时,我经常需要查看服务返回给浏览器的json.所以我将把JSON数据的URL丢弃到地址栏中.
这对ASPNET很好,因为在编码错误的情况下,我可以在浏览器中看到ASPNET诊断:

但是当服务器端代码正常工作并实际返回JSON时,IE会提示我下载它,所以我看不到响应.

我可以让IE不这样做,换句话说,只是将它显示为纯文本?
我知道如果我将Content-Type标头设置为,我可以这样做text/plain.  
但这特别是ASPNET MVC应用程序的上下文,当我在我的一个动作方法上使用JsonResult时,它自动设置响应.另外,我有点想保留适当的内容类型,而不是仅仅为了支持调试工作而改变它.
Che*_*eso 232
我找到了答案.
您可以通过更新注册表将IE8配置为在浏览器窗口中显示application/json.不需要外部工具.我没有对此进行广泛测试,但它适用于Vista上的IE8.
要使用此功能,请记住,有关更新注册表的所有常见注意事项均适用.停止IE.然后,将以下内容剪切并粘贴到文件中,名称为json-ie.reg.  
Windows Registry Editor Version 5.00
;
; Tell IE to open JSON documents in the browser.  
; 25336920-03F9-11cf-8FD0-00AA00686F13 is the CLSID for the "Browse in place" .
;  
[HKEY_CLASSES_ROOT\MIME\Database\Content Type\application/json]
"CLSID"="{25336920-03F9-11cf-8FD0-00AA00686F13}"
"Encoding"=hex:08,00,00,00
[HKEY_CLASSES_ROOT\MIME\Database\Content Type\text/json]
"CLSID"="{25336920-03F9-11cf-8FD0-00AA00686F13}"
"Encoding"=hex:08,00,00,00
然后双击.reg文件.重启IE.在勾选返回带有Content-Type: application/json或Content-Type: text/json如下的doc的URL时获得的新行为:

它做了什么,为什么它的工作原理:
这25336920-03F9-11cf-8FD0-00AA00686F13是"就地浏览"操作的CLSID.基本上这个注册表项告诉IE,对于具有mime类型的application/json的文档,只需查看它.这不会影响通过<script>标签或XHR等下载的任何application/json文档.
CLSID和编码密钥获得用于相同的价值观image/gif,image/jpeg和text/html.  
此提示来自此站点,以及Microsoft 在Internet Explorer中处理MIME类型的文章.
在FF中,您也不需要外部加载项.你可以使用view-source:伪协议.在地址栏中输入这样的URL:
view-source:http://myserver/MyUrl/That/emits/Application/json
这个伪协议曾经在IE中得到支持,直到WinXP-sp2,当微软出于安全原因禁用它时.
小智 15
我遇到了类似的问题.我使用的是"$.GetJSON"jQuery,一切都在Firefox和Chrome中完美运行.
但它在IE中无效.所以我试图直接访问json的URL,但在IE中,它询问我是否要下载该文件.
经过多次搜索后,我发现结果中必须有一个带有内容类型的标题,在我的例子中,内容类型是:
header("Content-type: text/html; charset=iso-8859-1");
但是当发出请求的页面收到这个json时,在IE中,你必须指定SAME CONTENT-TYPE,在我的例子中是:
$.getJSON (
"<? site_url php echo (" ajax / tipoMenu ")?>"
{contentType: 'text / html; charset = utf-8'},
function (result) {
拥抱
Tom*_*Maj 12
上面的解决方案是缺少的东西,下面的代码应该适用于所有情况:
Windows Registry Editor Version 5.00
;
; Tell IE to open JSON documents in the browser.  
; 25336920-03F9-11cf-8FD0-00AA00686F13 is the CLSID for the "Browse in place" .
;  
[HKEY_CLASSES_ROOT\MIME\Database\Content Type\application/json]
"CLSID"="{25336920-03F9-11cf-8FD0-00AA00686F13}"
"Encoding"=hex:08,00,00,00
[HKEY_CLASSES_ROOT\MIME\Database\Content Type\application/x-json]
"CLSID"="{25336920-03F9-11cf-8FD0-00AA00686F13}"
"Encoding"=hex:08,00,00,00
[HKEY_CLASSES_ROOT\MIME\Database\Content Type\text/json]
"CLSID"="{25336920-03F9-11cf-8FD0-00AA00686F13}"
"Encoding"=hex:08,00,00,00
只需保存文件json.reg,然后运行以修改您的注册表.