Ajax 中 XML和JSON

XML 文档

Ajax请求的过程中,返回的是一个类似于HTML 结构的数据格式,但是这个不是HTML代码而是XML格式数据,Ajax的x就是XML,也就是当初设计Ajax定义的数据传输的格式

  1. XML 指可扩展标记语言(EXtensible Markup Language)
  2. XML 是一种标记语言,很类似 HTML,不是HTML
  3. XML 的设计宗旨是传输数据,而非显示数据
  4. 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格式转换为字符串

 

猜你喜欢

转载自blog.csdn.net/weixin_41040445/article/details/114968400
今日推荐