ajax传输的数据格式(XML,json)怎么获取解析

ajax传输数据格式

ajax传输XML

XML介绍

XML 指可扩展标记语言EXtensible Markup Language,虽然格式和html类似,但是是用来传递数据的。

<?xml version="1.0" encoding="UTF-8"?>
<singer>
<name>周杰伦</name>
<age>18</age>
<skill>途牛</skill>
</note>
  • XML是纯文本,这点跟HTML很像,所以我们可以用任何的文本编辑软件去打开编辑它
XML语法
  • 第一行是XML的声明,指定XML版本(1.0)以及使用的编码(UTF-8万国码)
<?xml version="1.0" encoding="UTF-8"?>
  • 自定义标签:XML中没有默认的标签,所有的标签都是定义者自定义的
<!-- 下列标签都是被允许的 --> 
<fox></fox>
<name></name>
  • 双标签:XML中没有单标签,都是双标签
<haha>标签内</haha>
  • 根节点:XML中必须有一个根节点,所有的子节点都放置在根节点下
<root>
  <name></name>
</root>
  • XML属性跟HTML一样,XML的标签里面也能够添加属性type = 'text',但是不建议这样用,而是使用标签的方式来表述内容
<!-- 使用属性配合标签表述信息 --> 
<person sex="female">
  <firstname>Anna</firstname>
  <lastname>Smith</lastname>
</person> 
<!-- 使用标签来表述信息 --> 
<person>
  <sex>female</sex>
  <firstname>Anna</firstname>
  <lastname>Smith</lastname>
</person>
  • XML解析:因为XML就是标签,所以直接用解析Dom元素的方法解析即可
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Document</title>
</head>
<body>
  <person id='personXML'>
      <name>fox</name>
      <age>18</age>
      <skill>小花花</skill>
  </person>
</body>
</html>
//获取方法
<script type="text/javascript">
    var xmlObj = document.getElementById("personXML");
    var name = xmlObj.getElementsByTagName('name')[0].innerHTML;

    console.log(name);
</script>
  • PHP中设置Header:在php中如果要使用xml传输数据,需要使用header()设置返回的内容为xml
header('content-type:text/xml;charset=utf-8');
ajax传输json
  • JSON语法 JSON(JavaScript Object Notation),是ECMAScript的子集,作用是进行数据的交换,而且由于语法更为简洁,网络传输,以及机器解析都更为迅速.
  • 语法规则
    • 数据在键值对中
    • 数据由逗号分隔
    • 花括号保存对象
    • 方括号保存数组
  • 数据类型
    • 数字(整数或浮点数)
    • 字符串(在双引号中)
    • 逻辑值(true 或 false)
    • 数组(在方括号中)
    • 对象(在花括号中)
    • null
// 基本对象
{
  "name":"fox",
  "age":"18",
  "sex":"true",
  "car":null
}
// 数组 
[
  {
      "name":"小小胡",
      "age":"1"
  },
  {
      "name":"小二胡",
      "age":"2"
  }
]
  • JSON解析
  • JSON.parse()方法:将JSON字符串转化为JavaScript对象
  • JSON.stringify()方法:将JavaScript对象,转化为JSON字符串
  • 由于老式IE(8以下)浏览器中没有JSON对象,通过导入JSON2.js框架即可解决,框架获取地址为:JSON2.js_github地址
<script type="text/javascript">
var Obj = {
  name:"fox",
  age:18,
  skill:"study"
};
console.log(Obj);
// 将JavaScript对象格式化为JSON字符串
var jsonStr = JSON.stringify(Obj);
console.log(jsonStr);
// 将JSON字符串转化为JavaScript对象
var jsonObj = JSON.parse(jsonStr);
console.log(jsonObj);
</script>
  • 使用eval()方法:需要注意的是,eval方法需要将内容使用()包起来
<script type="text/javascript"> 
var jsonStr ={
  "name":"fox",
  "age":18,
  "skill":"study"
};
var jsonObj = eval('('+jsonStr+')'); 
console.log(jsonObj);
</script>
  • PHP中
    • **json_decode()**方法: 将json字符串转化为变量
    • **json_encode()**方法: 将变量转化为json字符串
<?php 
    header("Content-Type:text/html;charset=utf-8");
    // json字符串
    $jsonStr = '{"name":"易峰","age":54,"skill":"歌神"}';
    // 字符串转化为 php对象
      print_r(json_decode($jsonStr));
      echo "<br>";
      // php数组
      $arrayName = array('name' =>'littleFox' ,'age' => 13 );
      // php对象 转化为 json字符串
      print_r(json_encode($arrayName));
 ?>
//输出结果为:
stdClass Object ( [name] => 易峰 [age] => 54 [skill] => 歌神 ) 
{"name":"littleFox","age":13}

注意点

  • 如果不牵扯到将数据发送到服务器,那么get和post请求唯一的区别只有open方法中设置的请求方法。
    • get方法发送数据是url之后拼接;
    • post发送数据是通过send方法发送:.send('name=jack&age=18'),格式就是key=value&key2=value2的字符串。
  • 如果想要使用Post发送数据给服务器,需要进行如下设置:.setRequestHeader('Content-type','application/x-www-form-urlencoded'),在open和send之间添加这行代码。
    • .setRequestHeader():能够设置一些自定义的键值对。
  • array_random(array,number):随机的数组,取几个。(取数组中的随机键)。
  • 读取文本文档:file_get_contents(url);
  • 字符串转化为数组,并且通过,分隔:explode(',',要要分隔的字符串);
  • wamp:window apache php mysql(数据库关键,用来保存数据,对于数据的稳定性、安全性有很多种策略予以保护。)
    • 常见的数据库软件:oracle/mssql(sql server)/mysql/mongdb。
  • 如果使用post的时候不发送任何数据,那么setRequestHeader()可以不写。
  • ajax配合Php获取xml:如果不做任何的设置仅仅只是读取并返回,那么xml就只是字符串而已(并不好用);
  • 使用:服务端(php代码中需要使用header方法设置,返回的内容是xml);浏览器端ajax对象中获取返回的内容的属性不是responseText了,而是另一个responseXML。
  • 解析方式:在浏览器端如果是通过ajax.responseXML获取的xml对象,就是一个文档对象,支持html页面中默认的documnet.querySelector的方法获取内部元素(document.getElmenetById,document.getElementsByTagName等这些方法都是支持的。)
  • 如果服务器端返回的是xml数据,responseText中也可以获取到字符串,但是处理很麻烦。
  • json是一种排列数据的格式,载体是字符串,基本上所有的语言都支持json格式的字符串转化为该语言对应的对象。
    • json:键和值都必须写上双引号,但是如果值是数字可以不加双引号。
    • JSON.parse();json数据转化为js识别的数据。
  • 使用方式: 浏览器:获取从服务器返回的json格式字符串通过ajax.responseText(获取到的是字符串)----JSON.parse(ajax.responseText)
  • 服务器:准备一个json文件,按照json格式去写内容;json文件中两边的单引号可以不写,因为读出来就是字符串;读取并返回:echo file_get_contents('info/xxx.json');
  • 记得写完的文件放在配置好的网站根目录中,然后开启http服务,在网页中输入127.0.0.1访问哦,如果还不会,可以参考我的一篇博客:WAMP集成环境部分

这些数据格式都了解了吗?在实际应用开发中,我遇到比较多的都是json数据格式,转换的话是非常容易的,多试几次就可以了,或者直接收藏了需要的时候查看一下就OK了。

转载于:https://my.oschina.net/yxmBetter/blog/837496

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值