春雨的雕刻时光 2020-05-10
ajax使用方法就不多=说了,参照这篇https://www.cnblogs.com/shangrao/p/12861845.html
json和xml不同的地方是得到响应方法。
如需获得来自服务器的响应,请使用 XMLHttpRequest 对象的 responseText 或 responseXML 属性
属性 | 描述 |
---|---|
responseText | 获得字符串形式的响应数据。 |
responseXML | 获得 XML 形式的响应数据。 |
xml文件
文件格式介绍:结构化数据
获取xml文件方法
1.Js解析xml格式
2.根据xml文本内容创建xml对象
3.获取元素节点的文本内容
4.获取元素的属性值
data.xml
<?xml version="1.0" encoding="utf-8"?> <bookstore> <book> <name>三国演义</name> <category>文学</category> <desc>描述</desc> </book> <book> <name>水浒传</name> <category>文学</category> <desc>草寇or英雄豪杰</desc> </book> <book> <name>西游记</name> <category>文学</category> <desc>妖魔鬼怪牛鬼蛇神什么都有</desc> </book> <book> <name>红楼梦</name> <category>文学</category> <desc>宝哥哥与林妹妹的爱情史</desc> </book> </bookstore>
HTML页面
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <title>json文件</title> <script type="text/javascript"> window.onload = function(){ var btn = document.getElementById(‘btn‘); btn.onclick = function(){ showBookInfo(); } function showBookInfo(){ document.getElementById(‘bookInfo‘).innerHTML = ‘‘; var xhr = null; if(window.XMLHttpRequest){ xhr = new XMLHttpRequest(); }else{ xhr = new ActiveXObject(‘Microsoft.XMLHTTP‘); } console.log(‘第一步‘+xhr.readyState); xhr.open(‘get‘,‘./data.xml‘);//xml文件位置 console.log(‘第二步‘+xhr.readyState); xhr.send(null); xhr.onreadystatechange = function(){ if(xhr.readyState == 4 && xhr.status == 200){ var data = xhr.responseXML;//返回xml对象(所有内容--document) var bs = data.getElementsByTagName(‘bookstore‘)[0];//得到bookstores节点 console.log(bs); var books = bs.getElementsByTagName(‘book‘); var tag = ‘‘; for(var i=0;i<books.length;i++){//循环遍历内容 var book = books[i]; var name = book.getElementsByTagName(‘name‘)[0]; var category = book.getElementsByTagName(‘category‘)[0]; var desc = book.getElementsByTagName(‘desc‘)[0]; tag += ‘<tr><td>‘+getNodeText(name)+‘</td><td>‘+getNodeText(category)+‘</td><td>‘+getNodeText(desc)+‘</td></tr>‘; } var tbody = document.createElement(‘tbody‘); tbody.innerHTML = tag; document.getElementById(‘bookInfo‘).appendChild(tbody); } } } } //获取文本节点内容 function getNodeText(node){ if(window.ActiveXObject){//IE return node.text; }else{//标准浏览器 if(node.nodeType == 1){ return node.textContent; } } } </script> </head> <body> <input type="button" value="点击" id="btn"> <div> <table id="bookInfo"> </table> </div> </body> </html>
json文件
文件格式介绍:JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它使得人们很容易的进行阅读和编写
json简单说就是javascript中的对象和数组。{ } 这是对象, [ ] 这是数组。
获取数组内容只需要arr[索引]就可以了。
获取对象内容只需要 obj.属性名 就可以了。
解析下面的数据,整个json 文件 我们给他声明一个变量 叫datas。
datas 对象是可以放任何内容的,下面是有一个属性 total,一个数组 date,一个键值对 obj。
获取对象的值 直接 datas.total,就可以得到“4”了。
datas.data 就可以得到[....]一个数组了,数组有4个元素,这四个元素是四个不同的对象,obj.data[0],代表第一个数组,obj.data[0].name 就可以到第一个数组的name值 “三国演义”。
datas["adf"] 就可得到"aa"值。其实相当于数组,只不过下标可以自己去定义。
data.json
{ "total":"4", "data":[ { "name":"三国演义", "category":"文学", "desc":"一个军阀混战的年代" },{ "name":"水浒传", "category":"文学", "desc":"草寇or英雄好汉" },{ "name":"西游记", "category":"文学", "desc":"妖魔鬼怪牛鬼蛇神什么都有" },{ "name":"红楼梦", "category":"文学", "desc":"一个封建王朝的缩影" } ], "obj":{"adf":"aa"} }
html页面
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <title>json文件</title> <script type="text/javascript"> window.onload = function(){ var btn = document.getElementById(‘btn‘); btn.onclick = function(){ showBookInfo(); } function showBookInfo(){ var xhr = null; if(window.XMLHttpRequest){ xhr = new XMLHttpRequest(); }else{ xhr = new ActiveXObject(‘Microsoft.XMLHTTP‘); } xhr.open(‘get‘,‘./data.json‘); xhr.onreadystatechange = function(){//回调函数 if(xhr.readyState == 4 && xhr.status == 200){ var data = JSON.parse(xhr.responseText);//得到数据 console.log(data);//打印数据 var total = data.total;//得到 4 值 var list = data.data;//得到data数组 var tag = ‘‘; for(var i=0;i<total;i++){ var book = list[i]; tag += ‘<tr><td>‘+book.name+‘</td><td>‘+book.category+‘</td><td>‘+book.desc+‘</td></tr>‘; } var tbody = document.createElement(‘tbody‘); tbody.innerHTML = tag; document.getElementById(‘bookInfo‘).appendChild(tbody); } } xhr.send(null); } } </script> </head> <body> <input type="button" value="点击" id="btn"> <div> <table id="bookInfo"> </table> </div> </body> </html>