XML和JSON数据传输

XML数据传输

xml文档:https://www.w3school.com.cn/xml/index.asp

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

  •   XML 指可扩展标记语言(EXtensible Markup Language)
  •   XML 是一种标记语言,很类似 HTML,不是HTML
  •   XML 的设计宗旨是传输数据,而非显示数据
  •   XML 标签没有被预定义。您需要自行定义标签。

什么叫做标签预定义,也就是可以自己命名标签名

.xml文件

<?xml version="1.0" encoding="utf-8" ?>
<jibenxinxi>
<xuesheng>
<xingming>小明</xingming>
<xuehao>1</xuehao>
<xingbie>男</xingbie>
<age>18</age>
<sex>男</sex  >
</xuesheng>
</jibenxinxi>

浏览器会以特殊的样式展现

 

 

也就是说我们的请求接口比如我们http://127.0.0.1/1.php返回给我们的是下面的格式

<ul>
  <li>学号:1</li>
  <li>姓名:小明</li>
  <li>性别:男</li>
  <li>年龄:18</li>
</ul>

使用xhr.responseText去接收,因为返回给我们的是一个字符串包裹的HTML结构,所以我们可以使用innerHTML去进行拼接,过程中可以识别字符串中的HTML结构

但是这样操作有很大的弊端:

返回给我们的如果是HTML的结构,此时注定拓展性不好,因为我们不需要固定结构,比如当前返回给我们的是一个ul和li 的结构但是我们此时页面中的功能不适用于这个ul和li的结构,所以我们需要自己进行拓展,这个时候我们就想到了JOSN格式

JSON的数据传输

到现在我们回想一下,XML格式和JSON格式的各自的优点,我们会发现XML能干的事情,JSON也能干,JSON能干的事情,XML未必能行

  • JSON有更丰富的数据结果;XML仅仅能够通过标签对儿来实现
  • JSON拥有数组和对象设置;并且互相嵌套,数据可以变得更负责;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格式转换为字符串

posted @ 2021-10-22 20:20  keyeking  阅读(293)  评论(0编辑  收藏  举报