Ajax--解析JSON数据与解析XML数据
一.Ajax解析JSON数据
nav.json(json数据)
1 [ 2 { 3 "link":"http://www.jd.com", 4 "src":"images/nav_1.png", 5 "text":"京东超市" 6 }, 7 { 8 "link":"http://www.taobao.com", 9 "src":"images/nav_2.png", 10 "text":"全球购" 11 }, 12 { 13 "link":"http://www.mi.com", 14 "src":"images/nav_3.png", 15 "text":"服装城" 16 }, 17 { 18 "link":"http://www.163.com", 19 "src":"images/nav_4.png", 20 "text":"京东生鲜" 21 } 22 23 ]
nav_json.php (服务器)
1 <?php 2 /** 3 * Created by qinpeizhou. 4 * Date: 2017/11/10 5 * Time: 16:52 6 * Email : 1031219129@qq.com 7 */ 8 header('Content-Type:text/html;charset=utf-8;'); 9 $jsonStr = file_get_contents('nav.json'); 10 echo $jsonStr;
原生JavaScript进行Ajax的JSON解析:
nav_json_HTML_JSON.html
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>Title</title> 6 <style> 7 *{ 8 margin: 0; 9 padding: 0; 10 list-style: none; 11 } 12 .nav{ 13 border: 1px solid #ddd; 14 } 15 .nav li { 16 float: left; 17 width: 200px; 18 text-align: center; 19 } 20 .nav li a{ 21 text-decoration: none; 22 } 23 </style> 24 </head> 25 <body> 26 <button id="btn">无刷新请求</button> 27 <div class="nav"> 28 <ul id="navIn"> 29 <!--<li> 30 <a href="chaoshi.html"> 31 <img src="images/nav_1.png" alt=""> 32 <p>京东超市</p> 33 </a> 34 </li> 35 <li> 36 <a href="chaoshi.html"> 37 <img src="images/nav_2.png" alt=""> 38 <p>京东超市</p> 39 </a> 40 </li> 41 <li> 42 <a href="chaoshi.html"> 43 <img src="images/nav_3.png" alt=""> 44 <p>京东超市</p> 45 </a> 46 </li> 47 <li> 48 <a href="chaoshi.html"> 49 <img src="images/nav_4.png" alt=""> 50 <p>京东超市</p> 51 </a> 52 </li>--> 53 </ul> 54 </div> 55 </body> 56 </html> 57 <script> 58 /** 59 // 1.创建AJAX对象 60 // 2.链接服务器 61 // 3.发送请求 62 // 4.接受响应结果 63 * */ 64 65 // 需求:点击按钮,获取数据并无刷新的添加到页面里 66 var btn = document.getElementById('btn'); 67 var navIn = document.getElementById('navIn'); 68 btn.onclick = function () { 69 // 1.创建小黄人 70 var xhr = new XMLHttpRequest(); 71 // 2.小黄人去哪里 72 xhr.open('get','05nav_json.php',true); 73 // 3.小黄人出发了 74 xhr.send(); 75 // 4.小黄人返回结果处理 76 xhr.onreadystatechange = function () { 77 if(xhr.status==200 && xhr.readyState == 4){ 78 // 获取页面的响应文本 79 var res = xhr.responseText; 80 // 只能解析合法的JSON数据 81 res = JSON.parse(res); 82 console.log(res); 83 // 把数据拼接成节点并添加到页面 84 var htmlStr = ''; 85 for (var i = 0; i < res.length; i++) { 86 htmlStr += " <li>" + 87 "<a href="+res[i].link+">" + 88 "<img src="+res[i].src+" alt=''> " + 89 "<p>"+res[i].text+"</p>" + 90 "</a><" + 91 "/li>" 92 } 93 navIn.innerHTML = htmlStr; 94 } 95 } 96 } 97 </script>
原生JavaScript进行Ajax的XML解析:
nav.xml
1 <?xml version="1.0" encoding="UTF-8" ?> 2 <array> 3 <item> 4 <link>http://www.jd.com</link> 5 <src>images/nav_1.png</src> 6 <text>京东超市</text> 7 </item> 8 <item> 9 <link>http://www.taobao.com</link> 10 <src>images/nav_2.png</src> 11 <text>全球购</text> 12 </item> 13 <item> 14 <link>http://www.mi.com</link> 15 <src>images/nav_3.png</src> 16 <text>服装城</text> 17 </item> 18 <item> 19 <link>http://www.163.com</link> 20 <src>images/nav_4.png</src> 21 <text>京东生鲜</text> 22 </item> 23 </array>
nav_XML.php
1 <?php 2 header('Content-Type:application/xml;charset=utf-8;'); 3 4 $xmlStr = file_get_contents('nav.xml'); 5 echo $xmlStr; 6 ?>
nav_XML.html
1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="UTF-8"> 5 <title>Title</title> 6 <style> 7 *{ 8 margin: 0; 9 padding: 0; 10 list-style: none; 11 } 12 .nav { 13 border: 1px solid #ddd; 14 overflow: hidden; 15 } 16 .nav li{ 17 float: left; 18 width: 100px; 19 text-align: center; 20 } 21 .nav li a{ 22 text-decoration: none; 23 } 24 </style> 25 </head> 26 <body> 27 <button id="btn">无刷新请求</button> 28 <div class="nav"> 29 <ul id="navIn"> 30 31 </ul> 32 </div> 33 </body> 34 </html> 35 <script> 36 /** 37 * 1. 创建AJAX对象 38 * 2. 连接服务器 39 * 3. 发送请求 40 * 4. 接收响应结果 41 */ 42 // 需求:点击按钮,获取数据并无刷新的添加到页面里 43 44 var btn = document.getElementById('btn'); 45 var navIn = document.getElementById('navIn'); 46 47 btn.onclick = function () { 48 49 // 1.创建小黄人 50 var xhr = new XMLHttpRequest(); 51 // 2.小黄人去哪里 52 xhr.open('get','nav_XML.php',true); 53 // 3.小黄人出发了 54 xhr.send(); 55 // 4.小黄人返回结果处理 56 xhr.onreadystatechange = function () { 57 if( xhr.status == 200 && xhr.readyState == 4 ){ 58 /* 获取页面的响应文本 */ 59 var res = xhr.responseXML; 60 // res = JSON.parse(res); 61 console.log(res.children[0].children); 62 var item = res.children[0].children; 63 /* 把数据拼接成节点,并添加到页面 */ 64 var htmlStr = ''; 65 for (var i = 0; i < item.length; i++) { 66 htmlStr += '<li>\n' + 67 ' <a href="'+item[i].querySelector('link').innerHTML+'">\n' + 68 ' <img src="'+item[i].querySelector('src').innerHTML+'" alt="">\n' + 69 ' <p>'+item[i].querySelector('text').innerHTML+'</p>\n' + 70 ' </a>\n' + 71 '</li>'; 72 } 73 // console.log(htmlStr); 74 navIn.innerHTML = htmlStr; 75 } 76 } 77 78 } 79 80 81 82 83 </script>