[jQuery] 解決IE 'JSON' 未被定義 的錯誤

摘要:[jQuery] 解決IE 'JSON' 未被定義 的錯誤

在撰寫jQuery的Ajax時 常常會用到json

最近在寫ajax的時候碰到了一個問題,在FireFox中使用 JSON.parse(); 轉換物件時正常,一拿到 IE 下執行就發生了 'JSON' 未被定義 的錯誤。

 

查了一下問題,發現是因為微軟 IE7以下的瀏覽器及IE8的相容性模式不支援 JSON.parse();

並且查到了兩種轉換JSON物件的方法,JSON.parse() 與 eval() 。

eval();

eval("var jobj = {\"Key\":\"K1\",\"Value\":\"12345\"}"); 

JSON.parse();

var jobj = JSON.parse("{\"Key\":\"K1\",\"Value\":\"12345\"}");

大家建議都是使用 JSON.parse(); 方法,因為eval()的安全性很低

但是總不能不管IE不支援的瀏覽器版本吧

所以推薦使用  Douglas Crockford 大師所寫的library 的 json2.js 來進行分析JSON

下載位置:  https://github.com/douglascrockford/JSON-js

所以方法要改寫成以下

if (typeof (JSON) == 'undefined') {
     //如果瀏覽器不支援JSON則載入json2.js
     $.getScript('js/json2.js');
}

var jobj = JSON.parse("{\"Key\":\"K1\",\"Value\":\"12345\"}");

以上即可兩者兼顧。

 

筆記: JSON序列化轉換 http://kelp.phate.org/2010/12/javascript-jsonserializer.html


以上文章敘述如有錯誤及觀念不正確,請不吝嗇指教
如有侵權內容也請您與我反應~謝謝您 :)