您的位置:首页 > Web前端 > JavaScript

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

2017-02-13 00:00 846 查看

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了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐