分享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的三种解析模式,希望大家喜欢。

时间: 2024-11-09 03:16:15

分享ajax的三种解析模式的相关文章

ISA&amp;amp;TMG三种客户端模式简介(三) SecureNAT 客户端

Secure NAT客户端可以说是TMG/ISA三种客户端中最简单的一种客户端,因为这种客户端并不需要特殊软件的支持,也不需要配置一些代理,但是确是依赖于组织的路由结构来将请求转到给ISA/TMG服务器的.所以必须要给客户端计算机配置默认网关,以便于ISA服务器可以通过路由器来进行直接或间接方式地向Internet发送所有通讯信息. 总结来说,Secure NAT客户端在配置前还需要确定一下您当前的网络环境,下边整理了两个: 1.简单网络.在简单网络方案中,SecureNAT 客户端和 ISA

ISA&amp;amp;TMG三种客户端模式简介(一)

最近 一直在忙于研究微软TMG产品遇到CDN技术后站点页面中应用CDN技术的内容就会发现显示不太稳定,同微软的一些同仁聊了很多解决方法,但是一直没有找一到一个合适的解决方法,没办法,只能研究一下看看从微软的三种客户端模式中是否有能解决现在面临的问题. 也顺便回顾了一下微软的三种客户端模式及ISA和TMG,也想借此次对三种客户端模式的一个回顾做一个整理,同时也分享给更多需要的博友. 谈到防火墙产品很多人会想到思科.华为.H3C.juniper等一些网络产商所提供的硬件防火墙产品,但其实在微软也提供

[WCF权限控制]WCF的三种授权模式

前面的两篇文章(<从两个重要的概念谈起:Identity与Principal[上篇]>和<从两个重要的概念谈起:Identity与Principal[下篇]>)主要探讨基于安全主体的授权.通过这些介绍我们知道:如果我们在实施授权的时候,当前线程的安全主体能够被正确设置,我们就可以正确地完成授权.基于相同的原理,对于WCF的服务授权,如果正确的安全主体能够在服务操作被执行之前被正确设置到当前线程,借助于这个安全主体,我们不但可以采用命令式编程的方式将授权逻辑写在相应的操作中,也可以采

深入理解java三种工厂模式_java

适用场合: 7.3 工厂模式的适用场合 创建新对象最简单的办法是使用new关键字和具体类.只有在某些场合下,创建和维护对象工厂所带来的额外复杂性才是物有所值.本节概括了这些场合. 7.3.1 动态实现 如果需要像前面自行车的例子一样,创建一些用不同方式实现同一接口的对象,那么可以使用一个工厂方法或简单工厂对象来简化选择实现的过程.这种选择可以是明确进行的也可以是隐含的.前者如自行车那个例子,顾客可以选择需要的自行车型号:而下一节所讲的XHR工厂那个例子则属于后者,该例中所返回的连接对象的类型取决

Oracle数据库 DGbroker三种保护模式的切换_oracle

1.三种保护模式 – Maximum protection 在Maximum protection下, 可以保证从库和主库数据完全一样,做到zero data loss.事务同时在主从两边提交完成,才算事务完成.如果从库宕机或者网络出现问题,主从库不能通讯,主库也立即宕机.在这种方式下,具有最高的保护等级.但是这种模式对主库性能影响很大,要求高速的网络连接. – Maximum availability 在Maximum availability模式下,如果和从库的连接正常,运行方式等同Maxi

IOS开发之自定义Button(集成三种回调模式)

前面在做东西的时候都用到了storyboard,在今天的代码中就纯手写代码自己用封装个Button.这个Button继承于UIView类,在封装的时候用上啦OC中的三种回调模式:目标动作回调,委托回调,Block回调.具体的内容请参考之前的博客:"Objective-C中的Block回调模式","Target-Action回调模式","Objective-C中的委托(代理)模式".在接下来要封装的button中将要用到上面的知识点.之前在做新浪微

Ajax的三种形式(开源项目)

ajax|项目   1 大大减少了服务器端和客户端的数据流量,不像submit-responce时代需要参杂大量的html脚本. 2 丰富了客户端的相应,例如表单子段的提示输入,数据验证.多级列表的实现.树桩菜单的动态加载等等 需要注意的事:Ajax设计时候一定要考虑用户界面事件触发的无序性.1 对一些有写操作的地方,要根据情况实行界面锁定功能,即提交完成前,不可以进行其他操作.2 任何操作都要给用户 Load... 这样的提示 Ajax的三种形式 1 最原始的XMLHTTPRepuest方式,

ISA&amp;amp;TMG三种客户端模式简介(四) Web代理 客户端

在前面几次,我们主要聊到了TMG/ISA中的三种客户端中的"防火墙客户端"."Secure NAT客户端模式"今天呢,我们就来聊聊第三种客户端模式"Web 代理客户端".那么接下来我们来看看"web 代理客户端"向服务器端口发送请求的客户端应用程序或计算机的端口有哪些呢? 1.ISA 服务器计算机上的端口 80. 2. ISA 服务器侦听来自客户端计算机所在网络的传出 Web 请求时所用的端口.默认情况下,ISA 服务器在端口

Oracle Data Guard的三种保护模式

Data Guard提供如下三种数据保护模式: 1)最高保护模式(Maximum Protection) 这里的"最大保护"是指最大限度的保护数据不丢失,也就是至少有一个standby和primary保持实时同步,但这样做的代价很大,即当一个事务提交时,不但要写到primary段的online redo log,还有写到至少一个standby的standby redo log.这样会有一个严重的问题,就是当standby出现故障或网络故障,导致日志无法同步时,primary数据库会被s