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 相关文章推荐
htm调用JS代码
Mar 15 Javascript
JQuery 确定css方框模型(盒模型Box Model)
Jan 22 Javascript
jquery1.4 教程二 ajax方法的改进
Feb 25 Javascript
JS实现在线统计一个页面内鼠标点击次数的方法
Feb 28 Javascript
jQuery实现平滑滚动页面到指定锚点链接的方法
Jul 15 Javascript
js实现固定显示区域内自动缩放图片的方法
Jul 18 Javascript
js简单实现表单中点击按钮动态增加输入框数量的方法
Aug 18 Javascript
javascript实现html页面之间参数传递的四种方法实例分析
Dec 15 Javascript
Javascript 实现微信分享(QQ、朋友圈、分享给朋友)
Oct 21 Javascript
基于jQuery的select下拉框选择触发事件实例分析
Nov 18 Javascript
jQuery自定义多选下拉框效果
Jun 19 jQuery
webpack+vue-cil中proxyTable处理跨域的方法
Jul 20 Javascript
在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
php调用mysql存储过程
2007/02/14 PHP
php 正确解码javascript中通过escape编码后的字符
2010/01/28 PHP
PHP数据库表操作的封装类及用法实例详解
2016/07/12 PHP
Jquery index()方法 获取相应元素索引值
2012/10/12 Javascript
jQuery实现 注册时选择阅读条款 左右移动
2013/04/11 Javascript
Javascript delete 引用类型对象
2013/11/01 Javascript
让新消息在网页标题闪烁提示的jQuery代码
2013/11/04 Javascript
javascript实时获取鼠标坐标值并显示的方法
2015/04/30 Javascript
实例解析JS布尔对象的toString()方法和valueOf()方法
2015/10/25 Javascript
onmouseover事件和onmouseout事件全面理解
2016/08/15 Javascript
Node.js中如何合并两个复杂对象详解
2016/12/31 Javascript
js实现简单的计算器功能
2017/01/16 Javascript
ES6正则表达式的一些新功能总结
2017/05/09 Javascript
Bootstrap table学习笔记(2) 前后端分页模糊查询
2017/05/18 Javascript
JavaScript取得gridview中获取checkbox选中的值
2017/07/24 Javascript
layui问题之模拟table表格中的选中按钮选中事件的方法
2019/09/20 Javascript
从零开始在vue-cli4配置自适应vw布局的实现
2020/06/08 Javascript
原生js实现自定义难度的扫雷游戏
2021/01/22 Javascript
vue-router路由懒加载及实现的3种方式
2021/02/28 Vue.js
Python爬虫框架Scrapy安装使用步骤
2014/04/01 Python
详解Python中的join()函数的用法
2015/04/07 Python
Python实现堆排序的方法详解
2016/05/03 Python
python opencv 图像尺寸变换方法
2018/04/02 Python
Python 3 使用Pillow生成漂亮的分形树图片
2019/12/24 Python
keras实现VGG16方式(预测一张图片)
2020/07/07 Python
解决pytorch 保存模型遇到的问题
2021/03/03 Python
The Body Shop美体小铺西班牙官网:天然化妆品
2019/06/21 全球购物
初中生学习的自我评价
2013/11/14 职场文书
2014年自我评价
2014/01/04 职场文书
教师节促销活动方案
2014/02/14 职场文书
党员示范岗材料
2014/12/19 职场文书
先进班集体申报材料
2014/12/26 职场文书
拾金不昧感谢信范文
2015/01/21 职场文书
写给老婆的保证书
2015/02/27 职场文书
MYSQL 的10大经典优化案例场景实战
2021/09/14 MySQL
Python机器学习实战之k-近邻算法的实现
2021/11/27 Python