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的获取mouse坐标插件的实现代码
Apr 01 Javascript
javascript对象之内置对象Math使用方法
Apr 16 Javascript
使用javascript获取flash加载的百分比的实现代码
May 25 Javascript
javascript模版引擎-tmpl的bug修复与性能优化分析
Oct 23 Javascript
jQuery的ready方法详解
Nov 27 Javascript
jQuery+easyui中的combobox实现下拉框特效
Feb 27 Javascript
jQuery animate easing使用方法图文详解
Jun 17 Javascript
微信小程序购物商城系统开发系列-目录结构介绍
Nov 21 Javascript
BootStrap模态框和select2合用时input无法获取焦点的解决方法
Sep 01 Javascript
Promise扫盲贴
Jun 24 Javascript
解决新建一个vue项目过程中遇到的问题
Oct 22 Javascript
详解Vue 的异常处理机制
Nov 30 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
一个简单的自动发送邮件系统(三)
2006/10/09 PHP
PHP的PSR规范中文版
2013/09/28 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(八)
2014/06/23 PHP
php+jQuery+Ajax简单实现页面异步刷新
2016/08/08 PHP
PHP实现动态创建XML文档的方法
2018/03/30 PHP
Yii框架使用PHPExcel导出Excel文件的方法分析【改进版】
2019/07/24 PHP
分别用marquee和div+js实现首尾相连循环滚动效果,仅3行代码
2011/09/21 Javascript
jquery淡入淡出效果简单实例
2016/01/14 Javascript
理解javascript中的闭包
2017/01/11 Javascript
用 js 的 selection range 操作选择区域内容和图片
2017/04/18 Javascript
薪资那么高的Web前端必看书单
2017/10/13 Javascript
vue.js打包之后可能会遇到的坑!
2018/06/03 Javascript
关于TypeScript模块导入的那些事
2018/06/12 Javascript
微信小程序之批量上传并压缩图片的实例代码
2018/07/05 Javascript
JS函数基本定义与用法示例
2020/01/15 Javascript
es6数组的flat(),flatMap()函数用法实例分析
2020/04/18 Javascript
element跨分页操作选择详解
2020/06/29 Javascript
PyQt5利用QPainter绘制各种图形的实例
2017/10/19 Python
浅谈flask中的before_request与after_request
2018/01/20 Python
TensorFlow实现iris数据集线性回归
2018/09/07 Python
由Python编写的MySQL管理工具代码实例
2019/04/09 Python
Python之变量类型和if判断方式
2020/05/05 Python
野兽派官方旗舰店:THE BEAST 野兽派
2016/08/05 全球购物
巴西补充剂和维生素购物网站:Natue
2019/06/17 全球购物
int和Integer有什么区别
2013/05/25 面试题
大一新生军训时的自我评价分享
2013/12/05 职场文书
机电一体化应届生求职信
2014/08/09 职场文书
四风问题自查自纠工作情况报告
2014/10/28 职场文书
就业意向协议书
2015/01/29 职场文书
房租涨价通知
2015/04/23 职场文书
2015年班组建设工作总结
2015/05/13 职场文书
辅导员学期工作总结
2015/08/14 职场文书
导游词之扬州大明寺
2019/10/09 职场文书
python基础之文件操作
2021/10/24 Python
Go语言入门exec的基本使用
2022/05/20 Golang
小程序实现侧滑删除功能
2022/06/25 Javascript