關於我

2014 MVP

認證

網站連結

 

Flag Counter

 

 

 

 

最新回應

[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


以上文章敘述如有錯誤及觀念不正確,請不吝嗇指教

如有侵權內容也請您與我反應~謝謝您 :)

DotBlogs Tags: JavaScript jQuery JSON 'JSON' 未被定義 JSON.parse json2.js

關連文章

[ASP.NET] 如何從Server端將資料轉換成JSON格式傳至Client端

[ASP.NET] 於ASP.NET使用 jQuery EasyUi DataGrid 存取資料

[ASP.NET][JS&jQuery] Client取得Server日期時間

[JavaScript&jQuery] 讓GridView可以使用全選/取消的CheckBox功能

回應

  • # re: [jQuery] 解決IE 'JSON' 未被定義 的錯誤 by Darkthread

    JSON2.js會視瀏覽器支援程度自動補上缺少的功能,可以不用自行判斷無支援JSON才載入,一律引用即可。

    2011/8/1 下午 04:57 | 回覆

  • # re: [jQuery] 解決IE 'JSON' 未被定義 的錯誤 by grence

    如果是為了減少不必要的流量消耗,JSON.parse要寫在 $.getScript的 callback裡面

    2011/8/1 下午 05:15 | 回覆

  • # re: [jQuery] 解決IE 'JSON' 未被定義 的錯誤 by Arvin Hsieh

    to Darkthread :
    這點我沒有去注意到,多謝提醒 :)

    2011/8/1 下午 05:28 | 回覆

  • # re: [jQuery] 解決IE 'JSON' 未被定義 的錯誤 by Arvin Hsieh

    to grence :
    因為其實我在JSON.parse的時候,在幾個不同地方,不過還是謝謝您的提醒 :)

    2011/8/1 下午 05:32 | 回覆

登入後使用進階評論

Please add 7 and 1 and type the answer here: