一、Ajax中的JSON格式

html代码:

<html>
<body>
<input type="button" value="Ajax" id="btn">
<script>
var btn = document.getElementById("btn");
btn.onclick = function(){
var xhr = getXhr();
xhr.open("post","10.php");
xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
/*
* 在客户端如何构建JSON格式
* * 构建符合JSON格式的字符串
*/
var user = '{"name":"zhangwuji","pwd":"123456"}';
xhr.send("user="+user);
xhr.onreadystatechange = function(){
if(xhr.readyState==4&&xhr.status==200){
var data = xhr.responseText;
/*
* 使用eval()函数进行转换
* * 使用"()"将其包裹,eval()函数强制将其转换为JSON格式(javascript代码)
* * 不使用"()"将其包裹,eval()函数将其识别为一个空的代码块
*/
var json = eval("("+data+")");
console.log(json);
}
}
}
function getXhr(){
var xhr = null;
if(window.XMLHttpRequest){
xhr = new XMLHttpRequest();
}else{
xhr = new ActiveXObject("Microsoft.XMLHttp");
}
return xhr;
}
</script>
</body> </html>

PHP代码:

<?php
// 接收客户端发送的请求数据
$user = $_POST['user'];
// 就是一个JSON格式的string字符串
//var_dump($user); $json_user = json_decode($user,true); //var_dump($json_user['name']); $json = '{"a":1,"b":2,"c":3,"d":4,"e":5}';
//var_dump(json_decode($json)); // 响应数据符合JSON格式的字符串
// 1. 手工方式构建
//echo '{"name":"zhouzhiruo","pwd":"123456"}'; // 2. 使用json_encode()函数
echo json_encode($json_user);
?>

二    Ajax中的XML格式

html页面:

<html>
<body>
<input type="button" value="Ajax" id="btn">
<script>
var btn = document.getElementById("btn");
btn.onclick = function(){
// 实现Ajax的异步交互
var xhr = getXhr();
xhr.open("post","07.php");
xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
/*
* 如何构建符合XML格式的请求数据
* * 注意
* * 请求数据的格式 - key=value 不能改变的
* * 将value值构建成符合XML格式的数据
* * 数据类型 - 字符串(string)
* * 格式符合XML的语法要求
* * 编写注意
* * 定义变量 - 专门构建XML格式的数据
* * 在send()方法进行拼串
*/
var user = "<user><name>zhangwuji</name><pwd>123456</pwd></user>";
xhr.send("user="+user);
xhr.onreadystatechange = function(){
if(xhr.readyState==4&&xhr.status==200){
// 接收服务器端的响应数据
var xmlDoc = xhr.responseXML;
var nameEle = xmlDoc.getElementsByTagName("name")[0];
var txtEle = nameEle.childNodes[0];
console.log(txtEle.nodeValue);
}
}
}
function getXhr(){
var xhr = null;
if(window.XMLHttpRequest){
xhr = new XMLHttpRequest();
}else{
xhr = new ActiveXObject("Microsoft.XMLHttp");
}
return xhr;
}
</script>
</body> </html>

PHP页面代码:

<?php
// 接收客户端发送的请求数据
$user = $_POST['user'];//符合XML格式要求的string类型
//var_dump($user);
// 创建DOMDocument对象
$doc = new DOMDocument();
// 调用loadXML()方法
$result = $doc->loadXML($user);
//var_dump($doc); // 如何构建符合XML格式的数据
/* 修改响应头的Content-Type值为"text/xml"
header('Content-Type:text/xml');
echo $user;// 符合XML格式的string类型
*/ header('Content-Type:application/xml');
echo $doc->saveXML();
?>

三   Ajax中的HTML格式

HTML页面:

<html>
<body>
<select id="province">
<option>请选择</option>
<option>山东省</option>
<option>辽宁省</option>
<option>吉林省</option>
</select>
<select id="city">
<option>请选择</option>
</select>
<script>
/*
* 需要思考哪些事情?
* * 在什么时候执行Ajax的异步请求?
* * 当用户选择具体的省份信息时
*/
// 1. 为id为province元素绑定onchange事件
var provinceEle = document.getElementById("province");
provinceEle.onchange = function(){
// 清空
var city = document.getElementById("city");
var opts = city.getElementsByTagName("option");
for(var z=opts.length-1;z>0;z--){
city.removeChild(opts[z]);
} if(provinceEle.value != "请选择"){
// 2. 执行Ajax异步请求
var xhr = getXhr();
xhr.open("post","06.php");
xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
xhr.send("provcince="+provinceEle.value);
xhr.onreadystatechange = function(){
if(xhr.readyState==4&&xhr.status==200){
// 接收服务器端的数据内容
var data = xhr.responseText;
// data是字符串,转换为数组
var cities = data.split(",");
for(var i=0;i<cities.length;i++){
var option = document.createElement("option");
var textNode = document.createTextNode(cities[i]);
option.appendChild(textNode); city.appendChild(option);
}
}
}
} }
// 定义创建XMLHttpRequest对象的函数
function getXhr(){
var xhr = null;
if(window.XMLHttpRequest){
xhr = new XMLHttpRequest();
}else{
xhr = new ActiveXObject("Microsoft.XMLHttp");
}
return xhr;
}
</script>
</body> </html>

php页面:

<?php
// 用于处理客户端请求二级联动的数据
// 1. 接收客户端发送的省份信息
$province = $_POST['provcince'];
// 2. 判断当前的省份信息,提供不同的城市信息
switch ($province){
case '山东省':
echo '青岛市,济南市,威海市,日照市,德州市';
break;
case '辽宁省':
echo '沈阳市,大连市,铁岭市,丹东市,锦州市';
break;
case '吉林省':
echo '长春市,松原市,吉林市,通化市,四平市';
break;
}
// 服务器端响应的是字符串
?>

三种ajax解析模式!的更多相关文章

  1. python笔记-20 django进阶 (model与form、modelform对比,三种ajax方式的对比,随机验证码,kindeditor)

    一.model深入 1.model的功能 1.1 创建数据库表 1.2 操作数据库表 1.3 数据库的增删改查操作 2.创建数据库表的单表操作 2.1 定义表对象 class xxx(models.M ...

  2. 简单区分VMware的三种网络连接模式(bridged、NAT、host-only)

    艺搜简介 VMware在安装时默认安装了两块虚拟网卡,VMnet1和VMnet8,另外还有VMnet0.这些虚拟网卡的配置都是由Vmware虚拟机自动生成的,一般来说不需要用户自行设置. Vmware ...

  3. VMware虚拟系统 bridged、NAT、host-only三种网络连接模式

    目录 前言 bridged(桥接模式) NAT(网络地址转换模式) host-only(仅主机模式) 总结 前言 如果你想利用VMWare安装虚拟机,或想创建一个与网内其他机器相隔离的虚拟系统,进行特 ...

  4. JSON三种数据解析方法(转)

    原 JSON三种数据解析方法 2018年01月15日 13:05:01 zhoujiang2012 阅读数:7896    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blo ...

  5. vmware为我们提供了三种网络工作模式,它们分别是:Bridged(桥接模式)、NAT(网络地址转换模式)、Host-Only(仅主机模式)。

    原文来自http://note.youdao.com/share/web/file.html?id=236896997b6ffbaa8e0d92eacd13abbf&type=note 我怕链 ...

  6. VMware下三种网络连接模式

    VMware下三种网络连接模式 Bridged(桥接模式) 在桥接模式下,VMware虚拟出来的操作系统就像是局域网中的一独立的主机,它可以访问该类网段内任何一台机器. 桥接网络环境下需要做到: 手动 ...

  7. VMWare中三种网络连接模式的区别

    VMWare中有桥接.NAT.host-only三种网络连接模式,在搭建伪分布式集群时,需要对集群的网络连接进行配置,而这一操作的前提是理解这三种网络模式的区别. 参考以下两篇文章可以更好的理解: V ...

  8. Netty怎么切换三种I/O模式和源码解释

    参考文献:极客时间傅健老师的<Netty源码剖析与实战>Talk is cheap.show me the code! 三种I/O模式 BIO:Block I/O,即同步并阻塞的IO:BI ...

  9. Redis三种集群模式介绍

    三种集群模式 redis有三种集群模式,其中主从是最常见的模式. Sentinel 哨兵模式是为了弥补主从复制集群中主机宕机后,主备切换的复杂性而演变出来的.哨兵顾名思义,就是用来监控的,主要作用就是 ...

随机推荐

  1. Python第二周总结

    之所以晚发10天是因为中途发生了很多事情,让我比较懵,甚至都想放弃学Python,但自己选择的路,在艰难也得走下去,加油!!! 补充上期str后缀小魔法: 字符串一旦创建不得修改,一旦修改或拼接,就会 ...

  2. 定时器timer类

    timer类 Timer(定时器)是Thread的派生类,用于在指定时间后调用一个方法. 构造方法: Timer(interval, function, args=[], kwargs={})  in ...

  3. 【bzoj3670】: [Noi2014]动物园 字符串-kmp-倍增

    [bzoj3670]: [Noi2014]动物园 一开始想的是按照kmp把fail算出来的同时就可以递推求出第i位要f次可以跳到-1 然后把从x=i开始顺着fail走,走到fail[x]*2<i ...

  4. mybatis学习笔记(五):mybatis 逆向工程

    mybatis学习笔记(五):mybatis 逆向工程 在日常开发中,如果数据库中存在多张表,自己手动创建 多个pojo 类和编写 SQL 语法配置文件,未免太过繁琐,mybatis 也提供了一键式生 ...

  5. spring 学习(二):spring bean 管理--配置文件和注解混合使用

    spring 学习(二)spring bean 管理--配置文件和注解混合使用 相似的,创建 maven 工程,配置pom.xml 文件,具体可以参考上一篇博文: sprint 学习(一) 然后我们在 ...

  6. UML之用例图详解

    原文链接:https://blog.csdn.net/mj_ww/article/details/53020080 UML,即Unified Model Language,统一建模语言.百度百科对他的 ...

  7. [转]Why you shouldn't use set (and what you should use instead)

    Why you shouldn't use set (and what you should use instead) --- stl::set和sorted ector对比Matt Austern ...

  8. 14. 异步加载Js的方式有哪些?

    我们都知道渲染引擎遇到 script 标签会停下来,等到执行完脚本,继续向下渲染,如下: <script type="text/javascript" src=". ...

  9. C++_IO与文件3-用cin进行输入

    接下来讨论的是如何给程序提供数据? cin对象将标准输入表示为字节流. 通常情况下是通过键盘来生成这种字节流 cin对象根据接收值得变量类型,使用其方法将字符序列转换为所需的类型. cin>&g ...

  10. P3243 [HNOI2015]菜肴制作

    传送门 把时间看成数,菜肴看成位置 考虑一个位置填什么数很麻烦 考虑一个数放在什么位置 一开始我想的是,对于一个限制 $(a,b)$ ,从 $a$ 往 $b$ 连一条边,然后如果有解则所有的限制构成了 ...