jQuery1.4.2与老版本json格式兼容的解决方法


Posted in Javascript onFebruary 12, 2011

原json文件内容为:
{
label: 'Europe (EU27)',
data: [[1999, 3.0], [2000, 3.9], [2001, 2.0], [2002, 1.2], [2003, 1.3], [2004, 2.5], [2005, 2.0], [2006, 3.1], [2007, 2.9], [2008, 0.9]]
}
解决方法一:
改成标准的json格式,要求对字符串都使用""限定,修改后的内容为:
{
"label": "Europe (EU27)",
"data": [[1999, 3.0], [2000, 3.9], [2001, 2.0], [2002, 1.2], [2003, 1.3], [2004, 2.5], [2005, 2.0], [2006, 3.1], [2007, 2.9], [2008, 0.9]]
}
这样就可以正常加载了。
解决方法二:
在jQuery-1.4.2.js中找到"parseJSON: function",可发现有如下代码:

// Logic borrowed from http://json.org/json2.js 
if ( /^[\],:{}\s]*$/.test(data.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, "@") 
.replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, "]") 
.replace(/(?:^|:|,)(?:\s*\[)+/g, "")) ) { 
// Try to use the native JSON parser first 
return window.JSON && window.JSON.parse ? 
window.JSON.parse( data ) : 
(new Function("return " + data))(); 
} else { 
jQuery.error( "Invalid JSON: " + data ); 
}

在httpData: function中用到了parseJSON函数:
// Get the JavaScript object, if JSON is used. 
if ( type === "json" || !type && ct.indexOf("json") >= 0 ) { 
data = jQuery.parseJSON( data );

在jQuery1.3.2中,没有parseJSON这个方法,而是直接使用下面的代码。
// Get the JavaScript object, if JSON is used. 
if ( type == "json" ) 
data = window["eval"]("(" + data + ")");

替换成原来1.3.2的代码就可以了。
下面是其它网友的一些补充:
jquery1.4.2版本在性能上又提升了一倍,但有一个令人头痛的事就是$.getJSON函数,原先使用旧版本的JSON数据如果写得不标准,使用这个版本就无法正常获取JSON数据了
例如:
JSON不标准的写法
{Err:1,errmsg:'无效ID值!请从正确表单页提交!'}

jquery1.4.x以下旧版本是能正常获取的,如果你的程序开发时用的是这类格式,那就头痛了,因为如果升级JQUERY到新版本,这种格式是读取不了的
JSON标准的写法,各种版本都能正常获取
{"Err":1,"errmsg":"无效ID值!请从正确表单页提交!"}

这是因为jquery1.4.X版本里使用了native json parser,对json格式有严格的要求
如果你不想修改程序的JSON数据,还有什么方法能让旧新据适合用在新版本上呢?
方法是有的,只要恢复回旧版本的JSON处理函数就可以了,修改方法如下:
jq1.4.x Regular 版本修改
打开jquery-1.4.x.js文件,找到下面代码:
data = jQuery.parseJSON( data );
修改为以下代码:
data = window["eval"]("(" + data + ")");
jq1.4.x Minified 版本修改
打开jquery-1.4.x.min.js文件,找到下面代码:
a=c.parseJSON(a);
修改为以下代码:
a= window["eval"]("(" + a+ ")");
试试你的程序吧,呵呵,$.getJSON是不是正常了?
当然,如果你有能力写正则的话,可以修改新版本的parseJSON函数里JSON处理正则
Javascript 相关文章推荐
基于jQuery实现最基本的淡入淡出效果实例
Feb 02 Javascript
jQuery实现统计输入文字个数的方法
Mar 11 Javascript
基于JS代码实现当鼠标悬停表格上显示这一格的全部内容
Jun 12 Javascript
JS完成画圆圈的小球
Mar 07 Javascript
详解vue.js之props传递参数
Dec 12 Javascript
Vue子组件向父组件通信与父组件调用子组件中的方法
Jun 22 Javascript
vue-cli 3.0 自定义vue.config.js文件,多页构建的方法
Sep 19 Javascript
小程序实现搜索框功能
Mar 26 Javascript
简单了解Vue computed属性及watch区别
Jul 10 Javascript
探索浏览器页面关闭window.close()的使用详解
Aug 21 Javascript
jQuery实现容器间的元素拖拽功能
Dec 01 jQuery
vue-quill-editor插入图片路径太长问题解决方法
Jan 08 Vue.js
在vs2010中调试javascript代码方法
Feb 11 #Javascript
juqery 学习之六 CSS--css、位置、宽高
Feb 11 #Javascript
juqery 学习之五 文档处理 包裹、替换、删除、复制
Feb 11 #Javascript
juqery 学习之五 文档处理 插入
Feb 11 #Javascript
基于JQuery的浮动DIV显示提示信息并自动隐藏
Feb 11 #Javascript
Javascript面向对象之四 继承
Feb 08 #Javascript
javascript面向对象之二 命名空间
Feb 08 #Javascript
You might like
ThinkPHP中实例Model方法的区别说明
2010/08/21 PHP
php通过正则表达式记取数据来读取xml的方法
2015/03/09 PHP
php使用标签替换的方式生成静态页面
2015/05/21 PHP
PHP实现获取某个月份周次信息的方法
2015/08/11 PHP
PHP在线书签系统分享
2016/01/04 PHP
关于PHP中协程和阻塞的一些理解与思考
2017/08/11 PHP
jQuery EasyUI API 中文文档 - Tree树使用介绍
2011/11/19 Javascript
图标线性回归斜着移动到指定的位置
2013/08/16 Javascript
获取中文字符串的实际长度代码
2014/06/05 Javascript
VUEJS实战之修复错误并且美化时间(2)
2016/06/13 Javascript
解析ajaxFileUpload 异步上传文件简单使用
2016/12/30 Javascript
微信小程序实战之运维小项目
2017/01/17 Javascript
微信小程序实现长按删除图片的示例
2018/05/18 Javascript
在Vue项目中引入JQuery-ui插件的讲解
2019/01/27 jQuery
使用express来代理服务的方法
2019/06/21 Javascript
js实现GIF图片的分解和合成
2019/10/24 Javascript
vue制作抓娃娃机的示例代码
2020/04/17 Javascript
ReactRouter的实现方法
2021/01/25 Javascript
[02:48]DOTA2英雄基础教程 拉席克
2013/12/12 DOTA
用Python编写生成树状结构的文件目录的脚本的教程
2015/05/04 Python
python opencv检测目标颜色的实例讲解
2018/04/02 Python
python excel使用xlutils类库实现追加写功能的方法
2018/05/02 Python
python字符串Intern机制详解
2019/07/01 Python
python将excel转换为csv的代码方法总结
2019/07/03 Python
Python运行DLL文件的方法
2020/01/17 Python
Python实现FLV视频拼接功能
2020/01/21 Python
将tensorflow模型打包成PB文件及PB文件读取方式
2020/01/23 Python
html5 canvas 画图教程案例分析
2012/11/23 HTML / CSS
惠普墨西哥官方商店:HP墨西哥
2016/12/01 全球购物
亚马逊巴西站:Amazon.com.br
2019/09/22 全球购物
管理建议书范文
2014/05/13 职场文书
公司授权委托书格式样本
2014/10/01 职场文书
教师党的群众路线学习心得体会
2014/11/04 职场文书
2015年推普周活动方案
2015/05/06 职场文书
CSS3实现三角形不断放大效果
2021/04/13 HTML / CSS
解决pytorch读取自制数据集出现过的问题
2021/05/31 Python