XML 文档
Ajax请求的过程中,返回的是一个类似于HTML 结构的数据格式,但是这个不是HTML代码而是XML格式数据,Ajax的x就是XML,也就是当初设计Ajax定义的数据传输的格式
- XML 指可扩展标记语言(EXtensible Markup Language)
- XML 是一种标记语言,很类似 HTML,不是HTML
- XML 的设计宗旨是传输数据,而非显示数据
- XML 标签没有被预定义。您需要自行定义标签
预定义标签和自定义标签,自定义标签就是可以自己命名标签名,预定义比如html的标签
.xml文件
声明头 :<?xml version="1.0" encoding="utf-8" ?>
<?xml version="1.0" encoding="utf-8" ?>
<jibenxinxi>
<xuesheng>
<xingming>小明</xingming>
<xuehao>10001</xuehao>
<xingbie>男</xingbie>
<shengao>180</shengao>
<tizhong>70</tizhong>
</xuesheng>
</jibenxinxi>
展示
之前的案例中返回 的数据是
<ul>
<li>学号:10001</li>
<li>姓名:小明</li>
<li>性别:男</li>
<li>年龄:18</li>
<li>身高:180</li>
<li>体重:70</li>
</ul>
使用xhr.responseText去接收,因为返回的是一个字符串包裹的HTML结构,所以可以使用innerHTML去进行拼接,过程中可以识别字符串中的HTML结构
元素.innerHTML = xhr.responseText; 此时页面中就能渲染这个结构
XML弊端
返回的如果是HTML的结构,此时注定拓展性不好,因为返回的不需要是固定结构,比如当前返回给我们的是一个ul和li 的结构,但是此时页面中的功能不适用于这个ul和li的结构,所以我们需要自己进行拓展,这个时候我们就想到了JOSN格式
JSON
XML和JSON 的对比:XML能干的事情,JSON也能干,JSON能干的事情,XML未必能行
- JSON有更丰富的数据结构;XML仅仅能够通过标签对儿来实现
- JOSN拥有数组和对象设置;并且互相嵌套,数据可以变得更丰富;XML只能通过标签去进行区分和嵌套
- JSON更轻量,没有对于的内容,都是数据;XML除了数据还有多余的标签结构
问题:当前们学习的Ajax读取进来的数据都是字符串,即便返回给我们的是JSON,也会被xhr.responseText识别为字符串
方法1:使用eval()语句,eval()语句可以将字符串转换为代码语句
var data = xhr.responseText;
var obj = eval("("+data+")")
返回的结果不可以直接放到eval()函数中,因为eval() 本质是转换JavaScript的语句的,所以如果我们想让他识别HTML结构代码可以使用括号包裹起来
方法2:是使用内置构造函数Function
var obj = (new Function("return"+xhr.responseText))()
通过内置构造函数进行一次周转,利用函数的return,将字符串去掉了
方法3:(常用)JSON.parse方法
var obj = JSON.parse(data)
最长用就是这种方法,因为它的兼容是IE6和7一下,所以基本已经不考虑这些兼容了
JOSN.parse()和JSON.stringify()方法是一对,JSON.parse()是将字符串转换为JSON格式,JSON.stringify()方法是将JSON格式转换为字符串