摘要:[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
以上文章敘述如有錯誤及觀念不正確,請不吝嗇指教
如有侵權內容也請您與我反應~謝謝您 :)