IE7,8,9下Ajax返回后,再执行跳转,会弹出阻止提示框。

所以我采用WebForm 提交思想:

    //导出
jv.postOpen = jv.PostOpen = jv.Export = function (url, postJson, op) { var entity = op.entity ;
var target = op.target || entity; var _createIframe = function (id) {
var iframe = jv.toElement('<iframe src="javascript:false;" name="' + id + '" />');
iframe.setAttribute('id', id);
iframe.style.display = 'none';
document.body.appendChild(iframe);
return iframe;
},
_createForm = function (target) {
var form = jv.toElement('<form method="POST"></form>');
form.setAttribute('action', url);
form.setAttribute('target', target);
form.style.display = 'none'; var isSimple = function (type) {
return ["string", "number", "date"].indexOf(type) >= 0;
}; var json = {};
var rec = function (obj, prefix) {
if (jv.IsNull(obj)) return; if (prefix) prefix += "."; for (var k in obj) {
var v = obj[k];
var t = jv.getType(v);
if (isSimple(t)) {
json[prefix + k] = v;
continue;
}
rec(v, prefix + k);
}
}; rec(postJson, ""); if (json) {
for (var k in json) {
form.appendChild(jv.toElement('<input type="hidden" name="' + k + '" value="' + json[k] + '" />'));
}
} document.body.appendChild(form);
return form;
}; if (op.self) {
var iframe = _createIframe(target); var fn = function () {
if (!iframe.parentNode) {
return;
} var response;
var doc = iframe.contentDocument ? iframe.contentDocument : iframe.contentWindow.document; try {
var innerHTML ;
var $html = $(doc.body.innerHTML) ;
var $pre = $html.find("pre");
if ($pre.length == 0 ) innerHTML = $html.text() ;
else innerHTML = $pre.text() ; //ie 返回的pre内容里,有 font ,还额外赠送一个 ^ 号。
if( innerHTML.slice(-1) == '^') innerHTML = innerHTML.slice(0,-1) ; // if (innerHTML.length > 10 && innerHTML.slice(0, 4).toLowerCase() == '<pre' && innerHTML.slice(-6).toLowerCase() == '</pre>') {
// innerHTML = doc.body.firstChild.firstChild.nodeValue;
// } if (innerHTML.length > 1 && innerHTML.slice(0, 1) != "<") {
if ( innerHTML.slice(0, 1) == "{" && innerHTML.slice(-1) == "}"){
response = $.parseJSON( innerHTML) ;
}
else {
response = jv.execJs( innerHTML );
}
}
} catch (err) {
response = { success: false };
} if (response && response.extraJs) jv.execJs(response.extraJs); if (op.callback) op.callback(response,doc);
}; //优先使用 attachEvent , 解决IE9下的BUG。
if (iframe.attachEvent) {
iframe.attachEvent('onload', fn);
}
else if (iframe.addEventListener) {
iframe.addEventListener('load', fn, false);
}
}
else {
var p = { entity: entity };
var whConfig = jv.PopListConfig(p.area, p.entity, p.detail); if (!p.width) {
p.width = whConfig[0];
} if (!p.height) {
p.height = whConfig[1];
} p.openMode = whConfig[2] || target; //多次打印多个窗口 p.entity = entity;
p.autoFocus = false; jv.Pop("", p);
} var form = _createForm(target);
form.submit();
};

但 IE10 下由于无法直接解析 JSON, 在使用该机制时,会弹出下载提示,并且阻止客户端的解析。

解决方案:http://blog.csdn.net/wang_shaner/article/details/6668359

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

经测试,是可行的。但让用户这样干,恐怕不好实行。

另一种方法: 把返回的 Json 标志改为 text/html , 但这也太狗血了。

等着 IE10 SP1 吧。狗血的IE

IE10不能显示JSON文件内容的更多相关文章

  1. 如何在浏览器网页中显示word文件内容

    如何在浏览器网页中显示word文件内容 把word文件读到byte[]中,再Response.OutputStream.Write(bytes)到客户端去 Page_Load事件中写: //FileS ...

  2. Java 读取Json文件内容

    读取json文件为String类型: import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logge ...

  3. package.json文件内容介绍

    概述 每个项目的根目录下面,一般都有一个package.json文件,定义了这个项目所需要的各种模块,以及项目的配置信息(比如名称.版本.许可证等元数据).npm install命令根据这个配置文件, ...

  4. jquery 获取 json文件内容后,将其内容显示到 下拉列表框中,再将下拉列表中的内容,显示到文本框中

    <script type="text/javascript"> $(function(){ $("#huoqv").click(function() ...

  5. CCLablettf读取显示xml文件内容显示中文

    CCDictionary *strings = CCDictionary::createWithContentsOfFile("tips2.xml"); const char *h ...

  6. Sencha touch 2 入门 -------- DataView 显示服务器端JSON文件数据

    今天学习了下DataView如何显示JSON文件数据,废话不多说,直接贴代码: 首先看下文件目录: 然后看下我们要处理的JSON文件,bookInfo.json. { "success&qu ...

  7. ios本地文件内容读取,.json .plist 文件读写

    ios本地文件内容读取,.json .plist 文件读写 本地文件.json .plist文件是较为常用的存储本地数据的文件,对这些文件的操作也是一种常用的基础. 本文同时提供初始化变量的比较标准的 ...

  8. python操作json文件获取内容

    写case时,将case 写到json文件比写到,写python一定要学会处理json 以下,是要处理的json 处理操作包括:打开json文件,获取json文件内容,关闭json文件,读取内容中的对 ...

  9. 八、Delphi10.3读取JSON文件,并修改JSON数组一条内容后保存到文件

    一.我们有一个JSON文件,如下: { "在野": [ { "城池": 0, "武将": 74, "登场年": 190 ...

随机推荐

  1. vagrant之道(即其工作流程)

    原文http://mitchellh.com/the-tao-of-vagrant The Tao of Vagrant 在安装vagrant或了解它如何工作之前,了解vagrant在实际工作环境中的 ...

  2. virtualbox+vagrant学习-2(command cli)-19-vagrant box命令

    Status 格式: vagrant status [name|id] options只有 -h, --help 这将告诉你vagrant正在管理的机器的状态. 很容易就会忘记你的vagrant机器是 ...

  3. [译]OpenGL像素缓冲区对象

    目录概述创建PBO映射PBO例子:Streaming Texture Uploads with PBO例子:Asynchronous Readback with PBO 概述 OpenGL ARB_p ...

  4. 访问 IIS 元数据库失败解决问题的方法

    近日调试一Asp.net程序,出现了“访问 IIS 元数据库失败”的错误信息,最后经过搜索发现了解决问题的方法. 解决方法如下: 1.依次点击“开始”-“运行”. 2.在“运行”栏内输入 “C:\WI ...

  5. 学习笔记——并行编程Parallel

    Parallel 并行运算 参考资料:http://www.cnblogs.com/woxpp/p/3925094.html 1.并行运算 使用Parallel并行运算时,跟task很像,相当于tas ...

  6. 980. Unique Paths III

    题目来源: https://leetcode.com/problems/unique-paths-iii/ 自我感觉难度/真实难度: 题意: 分析: 回溯法,直接DFS就可以了 自己的代码: clas ...

  7. P1470 最长前缀 Longest Prefix

    题目描述 在生物学中,一些生物的结构是用包含其要素的大写字母序列来表示的.生物学家对于把长的序列分解成较短的序列(即元素)很感兴趣. 如果一个集合 P 中的元素可以通过串联(元素可以重复使用,相当于 ...

  8. 2019北航OO第一单元作业总结

    一.前三次作业内容分析总结 前言 前三次作业,我提交了三次,但是有效作业只有两次,最后一次作业没能实现多项式求导的基本功能因此无疾而终,反思留给后文再续,首先我介绍一下这三次作业,三次作业围绕着多项式 ...

  9. Java面向对象之多态(来源于身边的案例)

    2019年1月3日 星期四 Java面向对象之多态(来源于身边的案例) 1. 为什么要用多态? 1.1 多态是面向对象的三大特性之一 1.2 多态是基于接口设计的模型 1.3 多态具有横向扩展特性 1 ...

  10. MAC系统常用快捷键 基本常用的都整理在这里了

    写在前面 Mac系统中有几个比较特殊的功能键,和Win系统的区别也主要在这里比如在Win系统中我们常用的Ctrl键,在Mac系统中对应的不是长得比较像的Cnotrol,而是Command键,貌似也是M ...