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

原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处理正则

时间: 2024-09-20 05:54:39

jQuery1.4.2与老版本json格式兼容的解决方法_jquery的相关文章

新老版本juqery获取radio对象的方法_jquery

新版本(目前1.3.2): $("[name='radio_name'][checked]").val(),或者$("input[name='radio_name']:checked").val() 老版本: $("[@name='radio_name'][checked]").val(),或者$("[@name='radio_name']:checked").val() 不同之处在于老版本多了一个@符号

jQuery获得IE版本不准确webbrowser的解决方法_jquery

用$.browser.version经常出现一些不准确的状况,最近碰到,做了一些总结,不知道是否全面. 用javasript的navigator.userAgent.indexOf("MSIE 8.0")取法结果是一样的. 1.用webbrowser加载htm.html页面,此时加载后获取IE的版本就是不准确的,比如我的机器是IE9,但是通过webbrowser加载之后,$.browser.version方法取得的版本便是变成了7.0,用"<meta http-equi

将List对象列表转换成JSON格式的类实现方法_json

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.易于人阅读和编写.同时也易于机器解析和生成.它基于JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999的一个子集. JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等).这些特性使JSON

php读取der格式证书乱码解决方法

  这篇文章主要介绍了php读取der格式证书乱码解决方法的相关资料,需要的朋友可以参考下 遇到的问题: 我的项目需要用到应用der格式的证书公钥及RSA算法来验签相关签名,PHP关于RSA算法不是很懂,手头上有Java和.net两种语言的实现,PHP实现甚感吃力. 小伙伴们的解答: 这个证书有他自己相应的编码,首先要找到这个,然后在用php读,设置对应的编码就好了.另外你如果是直接echo出证书内容的话,在那之前最好用 标签编码一下,否则他其实没乱码,只是你浏览器无法识别而已.还要注意你php

[jQuery1.9]Cannot read property ‘msie’ of undefined错误的解决方法

原文:[jQuery1.9]Cannot read property 'msie' of undefined错误的解决方法 $.browser在jQuery1.9里被删除了,所以项目的js代码里用到$.browser的地方就会报这个错. jQuery1.9里对不少API做了废弃或者删除.幸运的是,jQuery社区考虑到了这么做给开发人员带来的麻烦,在1.9同时也推出了一个新插件jQuery Migration,该插件可以检查出在1.9之后被废弃或者删除的API,恢复原有功能,从而保证已有的js代

基于javascript的JSON格式页面展示美化方法_javascript技巧

{"name": "monkey","age": "24","height": 164.0} 如果想让以上json字符串在页面上展示的比较易读,即变成下面的style: { "name": "monkey", "age": "24", "height": 164.0cm } 本文介绍的方法基于javascri

Android App中读取XML与JSON格式数据的基本方法示例_Android

XML假如有这样一个XML格式的数据: <?xml version="1.0" encoding="utf-8"?> <resources> <customer name="luopeng" age="21" gender="1" emial="dylankeepmoving@163.com"/> <customer name="dyl

jQuery通过ajax方法获取json数据不执行success的原因及解决方法_jquery

1.jquery通过ajax方法获取json数据不执行success回调 问题描述:jquery通过ajax方法获取json数据不执行success回调方法 问题原因:json格式存在问题或不符合标准写法,导致总是执行error回调方法 解决方案:使json格式务必符合下述3个标准写法: 1)键名称:用双引号括起: 2)字符串:用双引号括起: 3)数字,布尔值不需要使用双引号括起 : 注意:一定是双括号! 2.jQuery中ajax使用json数据类型总是跳过success执行error语句 执

JQuery 1.3.2以上版本中出现pareseerror错误的解决方法_jquery

感觉很莫名奇妙,前一阵子还好好的,怎么现在就突然报错了? 程序根本没动.于是开始跟踪分析,请求.返回的内容...最后判断是jquery 不承认返回的内容是json格式.当时返回的内容是: 复制代码 代码如下: {'keylist':[ {'tid':'13',"sumnum':'1'},{'tid':'21','sumnum':'1'} ]} 经过仔细检查也没发现任何问题,返回流的字符已经设成utf-8,内容用ff检测,ff也能识别成json格式,但此时还是报"pareseerror&