2.ajax数据交互xml和json

浏览器端只是负责用户的交互和数据的收集以及展示,真正的数据都是存储在服务器端的。
我们现在通过ajax的确可以返回一些简单的数据(一个字符串), 但是在实际开发过程中,肯定会会设计大量的复杂类型的数据传输,比如数组、对象等,但是每个编程语言的语法都不一样。因此我们会采用通过的数据交换格式(XML、JSON)来进行数据的交互。
XML:
  • XML 指可扩展标记语言(EXtensible Markup Language)
  • XML 是一种标记语言,很类似 HTML
  • XML 的设计宗旨是传输数据,而非显示数据
  • XML 标签没有被预定义。需要自行定义标签。
xml语法规范
  • 第一行必须是版本信息
  • 必须有一个根元素(有且仅有一个)
  • 标签不可有空格、不可以数字或.开头、大小写敏感
  • 不可交叉嵌套,都是双标签,如果是单标签,必须闭合
  • 属性双引号(浏览器自动修正成双引号了)
  • 特殊符号要使用实体
  • 注释和HTML一样
<students>  
<student>  
<name>张三</name>  
<age>18</age>
<gender>男</gender>  
<desc>路人甲</desc>  
</student>  
<student>  
<name>李四</name>
<age>20</age>  
<gender>男 </gender>  
<desc>路人乙</desc>  
</student>
</students>
php获取xml文件的内容
// 注意: 如果需要返回 xml 数据, 需要将 content-type 改成 text/xml, 不然浏览器以 text/html 解析header( 'content-type:text/xml;charset=utf-8' );
// file_get_content 用于获取文件的内容
// 参数: 文件的路径$result = file_get_content( "data.xml" );echo $result;
js解析xml
//获取服务端返回的xml数据,需要使用xhr.responseXML,这是一个document对象,可以使用DOM中的方法查找元素。var data = xhr.responseXML;
//获取所有的学生var students = data.querySelectorAll("student");
缺点:虽然可以描述和传输复杂数据,但是其解析过于复杂, 并且体积较大,所以实现开发已经很少使用了。

JSON
JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式。它基于 ECMAScript 规范,采用独立于编程语言的文本格式来存储和表示数据。
书写规范:
  • 数据在 键值对 中
  • 数据由逗号分隔(最后一个 键值对 不能带逗号)
  • 花括号保存对象,方括号保存数组
  • 键使用双引号
var json = '{"a": "Hello", "b": "World"}';
JSON数据在不同语言进行传输时,类型为字符串,不同的语言各自也都对应有解析方法,解析完成后就能很方便的使用了。
1.js对象和数组转换成,json字符串
JSON.stringify(obj/arr);
2.转换为js字符串
JSON.parse(JSONstr);
php中解析json:
json==>php对象/关联数组
通过获取 file_get_contents("data.json");
json_decode($data,true)//传参true是数组,false则是对象
php==>json
json_encode($obj/$arr)
处理兼容性问题:
var xhr = null;
if(XMLHttpRequest){
//现代浏览器 IE7+  
xhr = new XMLHttpRequest();}
else{ //老版本的 Internet Explorer (IE5 和 IE6)使用 ActiveX 对象:  
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
2.ajax数据交互xml和json