国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

jQuery1.4.2與老版本json格式兼容的解決方法

2019-11-20 23:56:55
字體:
來源:轉載
供稿:網友
原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(///(?:["http:////bfnrt]|u[0-9a-fA-F]{4})/g, "@")
.replace(/"[^"http:///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處理正則
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 疏附县| 德钦县| 凤冈县| 信宜市| 岳阳县| 德惠市| 玉树县| 贵港市| 洮南市| 三门县| 云阳县| 绍兴县| 德昌县| 岑巩县| 江陵县| 慈溪市| 永济市| 斗六市| 乌什县| 夹江县| 阳朔县| 温州市| 沙洋县| 保定市| 曲周县| 岳阳县| 彝良县| 天峻县| 红桥区| 锡林浩特市| 焉耆| 南京市| 潍坊市| 仙居县| 沧州市| 渝中区| 龙泉市| 杭州市| 郯城县| 太保市| 深泽县|