您现在的位置: 365建站网 > 365学习 > 让IE浏览器打开JSON文件直接显示不弹出下载提示的处理方法

让IE浏览器打开JSON文件直接显示不弹出下载提示的处理方法

文章来源:365jz.com     点击数:705    更新时间:2018-03-18 16:48   参与评论
为了测试更方便,一般我使用 Web API 都会设置让 Web API 返回 Json 格式。在IE浏览器中,当伙同在地址输入 URL 后 IE 浏览器会弹出是否需要下载的提示。
实际上 IE 弹出下载提示也没有什么不好的,但是有时候想要迫不及待的看到Json返回的结果时,又需要反复的下载再打开查看,这个行为就显得让人讨厌了。
如果能够像 Chrome 或 Firefox 可直接看结果就好了。

在做一個接口,返回的是json文件,做测试为了方便直接在网页上打开浏览。

解决办法也非常简单,需要我们在操作系统的注册表中添加关于 JSON 的 MIME 类型支持,你可以将以下内容编辑成扩展名为 .reg 的文件(文件名随意),然后双击执行将该文件导入注册表:
Windows Registry Editor Version 5.00
 
[HKEY_CLASSES_ROOT\MIME\Database\Content Type\application/json]
"CLSID"="{25336920-03F9-11cf-8FD0-00AA00686F13}"
"Encoding"=dword:00080000
 
[HKEY_CLASSES_ROOT\MIME\Database\Content Type\text/json]
"CLSID"="{25336920-03F9-11cf-8FD0-00AA00686F13}"
"encoding"=dword:00080000
其原理是修改注册表,将 application/json、text/json 两种 Content-Type 开启设置调成与 GIF/PNG/HTML 一致,改为直接用浏览器打开查看。 导入上面的注册表文件以后,再使用IE开启就可以不需要下载即可显示 json 了。

问题:

jQuery.form.js异步提交表单时,接收的是JSON格式的数据,但是奇怪的是在IE中提示下载文件,其他浏览器中一切正常,下载后,里面的内容就是在控制器中返回的数据。

解决方案


原返回值设定:context.Response.ContentType = "application/json";

尝试: context.Response.ContentType = "text/XML;"; 失败

后来试了下:context.Response.ContentType = "text/plain;charset=UTF-8";


例子

public ActionResult ShangChuanEmpPhoto()
        {
            WebImage pic = GetImageFromRequest();
            //WebImage pic = new WebImage(Request.InputStream);
            int MaxWidth = 600;
            int MaxHeight = 400;
            int MinWidth = 160;
            int MinHeight = 160;
            if (pic != null)
            {
                //string imageName = getTalentId();
                string imageName = MyClasses.KwstuLib.ClassesLib.GetIdByTime();
                string imageFormat = pic.ImageFormat;
                if (pic.Width > MaxWidth || pic.Height > MaxHeight) pic.Resize(MaxWidth, MaxHeight, true, true);
                if (pic.Width < MinWidth || pic.Height < MinHeight) pic.Resize(MinWidth, MinHeight, true, false);
                pic.Save(getUploadPhotoPath() + "Temp\\" + imageName);
                TouXiangInfo touxiang = new TouXiangInfo()
                {
                    w_full = pic.Width,
                    h_full = pic.Height,
                    tempfilename = imageName + "." + imageFormat
                };

//返回必须是“text/html”,不然IE会提示下载
                return Json(new
                {                    
                    List = touxiang
                }, "text/html");
            }
            return Content("0");
        }


视图中:


//上传照片               
        $('#uploadfile').change(function () {            
            var filepath = $("#uploadfile").val();
            if (filepath == "") return false;
            var extStart = filepath.lastIndexOf(".");
            var ext = filepath.substring(extStart, filepath.length).toUpperCase();
            if (ext != ".BMP" && ext != ".PNG" && ext != ".GIF" && ext != ".JPG" && ext != ".JPEG") {
                alert("图片限于bmp,png,gif,jpeg,jpg格式");
                return false;
            }
            $('#ShangChuanTuPianForm').submit();            
        });
        $("#ShangChuanTuPianForm").ajaxForm({
            beforeSend: function () {
                $("#shangchuan").attr("disabled", "disabled").val("正在上传");                
            },

//默认类型必须是‘text/html’
            dataType: 'html',//默认就是html类型,不写对火狐有影响            
            cache: false,
            success: function (response) {
                if (response != "0") {
                    responseText = JSON.parse(response); //把html转换成json类型                    
                    $.each(responseText, function (index, item) {                                   
                        $("#TuPianImg").append("<img src=\"" + urlPath + "Temp/" + item.tempfilename + "\" id=\"TempImage\" autocomplete=\"off\" />");                        
                        $("#tempfilename").val(item.tempfilename);
                        $("#w_full").val(item.w_full);
                        $("#h_full").val(item.h_full);
                    });                    
                    $("#TempImage").Jcrop({
                        //aspectRatio: 0.7692,
                        aspectRatio: 1,
                        setSelect: [0, 0, 160, 160],
                        onChange: changeCropInfo
                    }, function () {
                        JcropAPI = this;
                    });
                    $("#ShangChuanTuPianKongJian").hide();
                    $("#CaiJianTuPianKongJian").show();                                       
                }
            }
        });

如对本文有疑问,请提交到交流论坛,广大热心网友会为你解答!! 点击进入论坛


发表评论 (705人查看0条评论)
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
用户名: 验证码: 点击我更换图片
最新评论
------分隔线----------------------------