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

首頁 > 語言 > JavaScript > 正文

JavaScript的eval JSON object問題

2024-05-06 14:12:52
字體:
供稿:網(wǎng)友
通常的做法就是var jsonData = eval(xmlHttp.responseText)。這看起來似乎一切都是正確的,但當(dāng)你運(yùn)行代碼的時(shí)候,你會發(fā)現(xiàn)報(bào)“invalid labe”錯(cuò)誤了。為什么?我也不清楚,但我找到了解決這個(gè)問題的方法。

在我剛遇到這個(gè)問題的時(shí)候也特別頭痛,因?yàn)榭雌饋硭芯幋a是正確的,為了測試出現(xiàn)問題的位置,我逐漸縮小代碼范圍,最終得到如下簡短代碼:
代碼如下:
var jsonStr1 = '{"Name":"Tom","Sex":"Man"}';
var jsonObj1 = eval(jsonStr1);
alert(jsonObj1.Name);

以上代碼執(zhí)行正是報(bào)一開始說的invalid labe錯(cuò)誤。難道eval函數(shù)對某些表達(dá)式或?qū)ο笥邢拗疲坑谑俏矣譁y試了數(shù)組對象,代碼如下,結(jié)果下面代碼運(yùn)行很正常:
代碼如下:
var arrStr = '["Tom","Man"]';
var arrObj = eval(arrStr);
alert(arrObj[0]);

難道是我機(jī)子上的JavaScript解析器就JSON解析方面出了問題,于是我又測試下面代碼,但結(jié)果一樣正常:
代碼如下:
var jsonObj = {"Name":"Tom","Sex":"Man"};
alert(jsonObj.Name);

最終我還是沒有自行把問題解決,于是根據(jù)相關(guān)錯(cuò)誤信息上網(wǎng)搜索答案,沒想到一下子就找到了問題的根源,解決辦法就是“在eval的時(shí)候,要先把 JSON字符串值用 ‘()'括號先括起來”。網(wǎng)上找的資料都沒有說明是什么原因,當(dāng)然我也還是沒有明白正真的原因的。括號是起強(qiáng)制先執(zhí)行或先運(yùn)算作用的,返回的JSON就一個(gè)完整的對象,中間也沒有表達(dá)式,為什么還要加括號!像數(shù)組這種較復(fù)雜點(diǎn)的對象也能正常eval。沒辦法,就先記著這種用法吧。正確用法如下(注意看eval兩端的括號):
代碼如下:
var jsonStr2 = '{"Name":"Tom","Sex":"Man"}';
var jsonObj2 = eval('(' + jsonStr2 + ')');
alert(jsonObj2.Name);
發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 陆良县| 蚌埠市| 丹凤县| 佛坪县| 大石桥市| 峨山| 台中市| 庄浪县| 积石山| 淮南市| 衡南县| 松溪县| 且末县| 晴隆县| 手游| 杭州市| 格尔木市| 茶陵县| 清河县| 临邑县| 延边| 西安市| 丹寨县| 龙州县| 黄龙县| 乌审旗| 东山县| 同江市| 普宁市| 舟山市| 新绛县| 溧水县| 高邮市| 南澳县| 昌都县| 高平市| 承德市| 临武县| 广饶县| 新泰市| 那坡县|