JSON對象標記對XML的解析是基於DOM的,對Html的DOM熟悉的話,解析XML就沒什麼困難了。注意:在Firefox中,解析器不會忽略空格,所以元素間的空格,FF一樣會認為是一個節點。
一、JSON對象標記(JavaScript Object Notation),是一種以JS聲明對象的方式組合的一串字符串。JS可以按以下方式定義對象:
這樣就定義了對象 obj, 它有兩個公共屬性id和name,可以用 obj.id 的方式直接訪問其屬性值。從服務器獲取數據時往往不止一個對象,這就需要用到對象數組,JS中對象數組可以用 [] 來定義,如下:
- var obJS = [{ id: 1, name: 'n_1' }, { id: 2, name: 'n_2'}];
- alert(obJS[0].id);
這樣就定義了對象數組 objs, 它包含兩個對象,可以用索引來訪問,如 objs[0] 將引用到第一個對象。到這裡你或許已經想到服務器返回的字符串格式是怎樣的,但字符串畢竟是字符串,我們需要將其轉換為可以利用JS操作的變量。這就用到 eval 函數,請看下例:
- var obJS = eval("[{ id: 1, name: 'n_1' }, { id: 2, name: 'n_2'}]");
- lert(obJS[0].id); // return 1
JSON對象標記在Default.ASPx 文件中添加測試腳本:
- <script type="text/Javascript">
- function getJSon() {
- // 在IE7下測試通過,IE6下必須創建 new ActiveXObject("MSXML2.XMLHTTP.6.0")
- var request = new XMLHttpRequest();
- request.open('GET', 'GetJSon.ashx');
- request.onreadystatechange = function() {
- if (request.readyState == 4 && request.status == 200) {
- var obJS = eval(request.responseText);
- alert(obJS.length); // 2
- alert(obJS[0].id); // 1
- alert(obJS[1].name);// 'n_2'
- }
- }
- request.send(null);
- }
- </script>
【編輯推薦】