Ajax讀取XML和JSON數據


Ajax從服務器獲取的數據都是字符串,但是通過不同的解析,可以解析為XML或者JSON。

一般來說.使用XML格式的數據比較通用,但是服務器和客戶端解析起來都比較復雜一些;而使用JSON語句話,服務端需要多做一些工作,但到了客戶端,通過使用eval()函數來進行解析,就會獲得js對象,使用起來很方便.在使用過程中,究竟使用哪種方法,這個要根據項目的實際需要,建議:在能使用JSON的情況下,盡量使用JSON.

例子

1、XML數據user.xml

 1 <?xml version="1.0" encoding="utf-8" ?>
 2 <users>
 3   <user>
 4     <username>張三XML</username>
 5     <age>33</age>
 6   </user>
 7   <user>
 8     <username>李四XML</username>
 9     <age>34</age>
10   </user>
11 </users>

2、JSON數據user.js

1 [
2     { username: "張三JSON", age: 33 },
3     { username: "李四JSON", age: 32 }
4 ]

3、HTML頁面代碼

 1 <html>
 2     <head>
 3         <title>Ajax</title>
 4         <style type="text/css">
 5             table,td,th
 6             {
 7                 border:solid 1px silver;
 8                 border-collapse:collapse;
 9                 text-align:center;    
10             }
11             th,td
12             {
13                 width:100px;
14                 height:20px;
15             }
16         </style>
17         <script type="text/javascript">
18             function GetXML() {
19                 var xmlHttp = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP");
20                 xmlHttp.open("get", "XML/user.xml?random=" + Math.random(), true);
21                 // 綁定回調函數
22                 xmlHttp.onreadystatechange = function () {
23                     if (xmlHttp.readyState == 4 && xmlHttp.status == 200) {
24                         // 獲取返回的XML數據主體內容
25                         var result = xmlHttp.responseXML.documentElement;
26                         // 獲取user節點元素
27                         var users = result.getElementsByTagName("user");
28 
29                         for (var i = 0; i < users.length; i++) {
30                             // 獲取單個user
31                             var user = users[i];
32                             // 獲取user的具體信息
33                             var userName = user.getElementsByTagName("username")[0].childNodes[0].nodeValue;
34                             var age = user.getElementsByTagName("age")[0].childNodes[0].nodeValue;
35                             // 添加行
36                             appendRow(userName, age);
37                         }
38                     }
39                 }
40                 // 發送請求
41                 xmlHttp.send();
42             }
43             // 添加新行
44             function appendRow(username, age) {
45                 var ui = document.getElementById("userinfo");
46                 // 添加新行
47                 var newRow = ui.insertRow(ui.rows.length);
48                 // 添加新的單元格
49                 newRow.insertCell(0).innerHTML = username;
50                 newRow.insertCell(1).innerHTML = age;
51             }
52             // 獲取JSON數據
53             function GetJSON() {
54                 var xmlHttp = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP");
55                 xmlHttp.open("get", "JSON/user.js?random=" + Math.random(), true);
56                 xmlHttp.onreadystatechange = function () {
57                     if (xmlHttp.readyState == 4 && xmlHttp.status == 200) {
58                         var result = xmlHttp.responseText;
59                         // 使用eval函數使返回的字符串變成js對象
60                         var users = eval("(" + result + ")");
61                         for (var i = 0; i < users.length; i++) {
62                             // 獲取單個user信息
63                             var user = users[i];
64                             // 此處已經知道user數據的格式,故可以直接使用
65                             appendRow(user.username, user.age);
66                         }
67                     }
68                 }
69                 xmlHttp.send();
70             }
71         </script>
72     </head>
73     <body>
74         <input type="button" value="加載XML數據" onclick="GetXML();" />
75         <input type="button" value="加載JSON數據" onclick="GetJSON();" />
76         <br />
77         <br />
78         <table id="userinfo">
79             <thead>
80             <tr>
81                 <th>姓名</th>
82                 <th>年齡</th>
83             </tr>
84             </thead>
85         </table>
86     </body>
87 </html>

運行結果如下:

 

這篇文章是照着此文寫的 http://www.cnblogs.com/oneword/archive/2011/06/04/2072770.html

但是當我按照文中寫的做時,卻無法讀取XML文件中的數據,於是自己就在網上搜了一下,修改了網頁文件中的33、34行,最后成功讀取數據。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM