講講JS的內置函數eval()的用法.
最初用到它是為了將後台傳送過來的JSON格式的字符串轉化為JSON對象。後來發現它的功能的確很強大,遠不止這點,但今天只講它。如果想深入了解可以參考下W3School。
進入正題:
Java代碼
<script>
var json='{"id":1}';
alert(json.id);
</script>
如果仔細看,可以發現,上面那段代碼彈出的對話框是不能把id顯示出來的。原因就是json只是個字符串對象而並不是真正的JSON對象,注意最外邊那兩個單引號。
Java代碼
<script>
var json={"id":1};//去掉單引號
alert(json.id);
</script>
去掉單引號,id就成功顯示了。此時的json就是個JSON對象。
現在從服務器端傳回的JSON數據就是像第一個例子那樣帶單引號的,是不能直接使用的。那怎麼辦呢?
答案就是開頭提到的eval()函數。
Java代碼
<script>
var json='{"id":1}';
var jsonObj=eval("("+json+")");//注意這一行
alert(jsonObj.id);
</script>
id成功顯示。
注意兩個要點:
1、json如果只是單個對象,而不是對象數組,如上例所示,則不能直接寫成eval(json).
2、不能把eval("("+json+")") 寫成eval('("+json+")'),否則id照樣不會顯示。
再舉一例:
Java代碼
<script>
var json='[{"id":1}]';
var jsonObj=eval(json);
alert(jsonObj[0].id);
</script>
id照樣能成功顯示。注意區別:json包含的是一個對象數組,而非單個對象。但為什麼這樣就可以,而前面的例子卻不可以,我就稀裡糊塗了,還請大俠賜教。