三种ajax解析模式!
一、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解析模式!的更多相关文章
- python笔记-20 django进阶 (model与form、modelform对比,三种ajax方式的对比,随机验证码,kindeditor)
一.model深入 1.model的功能 1.1 创建数据库表 1.2 操作数据库表 1.3 数据库的增删改查操作 2.创建数据库表的单表操作 2.1 定义表对象 class xxx(models.M ...
- 简单区分VMware的三种网络连接模式(bridged、NAT、host-only)
艺搜简介 VMware在安装时默认安装了两块虚拟网卡,VMnet1和VMnet8,另外还有VMnet0.这些虚拟网卡的配置都是由Vmware虚拟机自动生成的,一般来说不需要用户自行设置. Vmware ...
- VMware虚拟系统 bridged、NAT、host-only三种网络连接模式
目录 前言 bridged(桥接模式) NAT(网络地址转换模式) host-only(仅主机模式) 总结 前言 如果你想利用VMWare安装虚拟机,或想创建一个与网内其他机器相隔离的虚拟系统,进行特 ...
- JSON三种数据解析方法(转)
原 JSON三种数据解析方法 2018年01月15日 13:05:01 zhoujiang2012 阅读数:7896 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blo ...
- vmware为我们提供了三种网络工作模式,它们分别是:Bridged(桥接模式)、NAT(网络地址转换模式)、Host-Only(仅主机模式)。
原文来自http://note.youdao.com/share/web/file.html?id=236896997b6ffbaa8e0d92eacd13abbf&type=note 我怕链 ...
- VMware下三种网络连接模式
VMware下三种网络连接模式 Bridged(桥接模式) 在桥接模式下,VMware虚拟出来的操作系统就像是局域网中的一独立的主机,它可以访问该类网段内任何一台机器. 桥接网络环境下需要做到: 手动 ...
- VMWare中三种网络连接模式的区别
VMWare中有桥接.NAT.host-only三种网络连接模式,在搭建伪分布式集群时,需要对集群的网络连接进行配置,而这一操作的前提是理解这三种网络模式的区别. 参考以下两篇文章可以更好的理解: V ...
- Netty怎么切换三种I/O模式和源码解释
参考文献:极客时间傅健老师的<Netty源码剖析与实战>Talk is cheap.show me the code! 三种I/O模式 BIO:Block I/O,即同步并阻塞的IO:BI ...
- Redis三种集群模式介绍
三种集群模式 redis有三种集群模式,其中主从是最常见的模式. Sentinel 哨兵模式是为了弥补主从复制集群中主机宕机后,主备切换的复杂性而演变出来的.哨兵顾名思义,就是用来监控的,主要作用就是 ...
随机推荐
- winform datagridview数据显示不全
如果是内容是汉字,列的宽度设置不够时会自动换行,如果是数字和字母,是不会自动换行的,要把列宽设得足够,整个表格显示不全时,下面会有横向滚动条,如果看不见可能是高度超出了母控件的高度,设得低点就看见了
- HDU6298-2018ACM暑假多校联合训练1001-Maximum Multiple
题意大致是给你一个整数n,让你确定是否有三个正整数x,y,z既能被n整除,又能x+y+z=n,并使xyz最大 从中根据规律可以看出,只有被3或被4整除的数才能满足题目要求 被3整除的最大值为n^3/3 ...
- Sublime的一些问题记录
1.默认的中文字体显示异常(参考:关于最新版的Sublime Text 3中默认的中文字体样式显示异常的问题) 1. 选择Perferences(首选项)--> settings(设置) 2. ...
- error while loading shared libraies :libopencv_core_so.3.4:cannot open shared object
TX2 上安装自己编译的opencv,使用时出现: error while loading shared libraies :libopencv_core_so.3.4:cannot open sha ...
- 理解Javascript_02_执行上下文01
执行上下文又名执行上下文环境 JS中为什么会产生这个概念呢,先来看一下下面的这段代码: 通过执行发现,第一句代码报了ReferenceError,第二句和第三句代码是undefined,由于undef ...
- 关于NPOIExcel导出excel
1.支持导出多个sheet文件 /// <summary> /// 导出到Excel并下载(html) /// </summary> /// <param name=&q ...
- 洛谷P2146 [NOI2015]软件包管理器
https://www.luogu.org/problemnew/show/P2146 传送门 简单的树链剖分......维护下当前安装了多少个包......修改后查询下就行了......附上极其丑陋 ...
- springboot(四)-项目部署
Springboot和我们之前学习的web应用程序不一样,其本质上是一个java应用程序.部署的方式有两种:打成jar包,或者打成war包. 打成jar包 切换到项目文件中 然后mvn install ...
- 前后端分离和restful开发规范
一.web开发的两种模式 1.前后端不分离 在前后端不分离的应用模式中,前端页面看到的效果都是由后端控制,由后端渲染页面或重定向,也就是后端需要控制前端的展示,前端与后端的耦合度很高. 这种应用模式比 ...
- PIE SDK均值滤波
1.算法功能简介 均值滤波是最常用的线性低通滤波,它均等地对待邻域中的每个像素.对于每个像素,取邻域像素值的平均作为该像素的新值.均值滤波算法简单,计算速度快,对高斯噪声比较有效.从频率域的角度看,相 ...