關於測試$.getJSON獲取json數據的問題

最近在幫朋友解決$.getJSON問題時遇到的情況,記錄下來,希望能幫助到別人

$.getJSON是後去本地後者本地json數據的。首先,不管是獲取網絡或本地數據有問題,可以通過輸出錯誤信息來查看原因,例如

$.getJSON("/Scripts/Menus.json", function (json) { console.log(json.menus[0].menuid) }).error(function (jqXhr, textStatus, error) {
                console.log("ERROR: " + textStatus + ", " + error);
            });

在網頁腳本中能查看錯誤原因,注意,只適用於jQuery 1.5+版本,此方法在http://stackoverflow.com/questions/13871625/jquery-getjson-load-local-json-file-not-working看到

其次,獲取網絡數據的時候,我沒有遇到問題,就不多說 

然後,測試獲取本地數據,應該注意路徑問題,我測試全路徑時顯示 “日誌: ERROR: error, No Transport ”,貌似全路徑不行,在mvc測試時用以前的路徑測試通過,測試時請注意瀏覽器緩存問題,刷新可能獲取的是上次的數據。在獲取本地數據過程中,發現有個問題,如果直接在js中定義json變量,能正常解析,但放到本地文件中讀取,就會報“日誌: ERROR: parsererror, SyntaxError: 無效字符 ”錯誤,通過測試,讀取本地文件json的時候,json數據裏面不能嵌套json數據,例如

{ "menus": [
				{ "menuid": "1", "icon": "icon-sys", "menuname": "控件使用",
					"menus": [{ "menuid": "11", "menuname": "我的博客", "icon": "icon-nav", "url": "http://www.cnblogs.com/WikStone/" },
							{ "menuid": "12", "menuname": "添加用戶", "icon": "icon-add", "url": "demo.html" },
							{ "menuid": "13", "menuname": "用戶管理", "icon": "icon-users", "url": "/Sys/User/List.aspx" },
							{ "menuid": "14", "menuname": "角色管理", "icon": "icon-role", "url": "demo2.html" },
							{ "menuid": "15", "menuname": "權限設置", "icon": "icon-set", "url": "demo.html" },
							{ "menuid": "16", "menuname": "系統日誌", "icon": "icon-log", "url": "demo1.html" }
						]
				}
		]
}

去掉裏面的menus就能正常讀取。

另外,關於ie瀏覽器正常接收數據,而用chrome瀏覽器不能接收數據的問題,是由於Chrome沒開xmlhttprequest去加載本地文件,可以用Chromed 開始命令--allow-file-access-from-files,這個方法我沒測試用,此方法引自上文的鏈接


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章