一、Ajax中的JSON格式

html代码:

  1. <html>
  2. <body>
  3. <input type="button" value="Ajax" id="btn">
  4. <script>
  5. var btn = document.getElementById("btn");
  6. btn.onclick = function(){
  7. var xhr = getXhr();
  8. xhr.open("post","10.php");
  9. xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
  10. /*
  11. * 在客户端如何构建JSON格式
  12. * * 构建符合JSON格式的字符串
  13. */
  14. var user = '{"name":"zhangwuji","pwd":"123456"}';
  15. xhr.send("user="+user);
  16. xhr.onreadystatechange = function(){
  17. if(xhr.readyState==4&&xhr.status==200){
  18. var data = xhr.responseText;
  19. /*
  20. * 使用eval()函数进行转换
  21. * * 使用"()"将其包裹,eval()函数强制将其转换为JSON格式(javascript代码)
  22. * * 不使用"()"将其包裹,eval()函数将其识别为一个空的代码块
  23. */
  24. var json = eval("("+data+")");
  25. console.log(json);
  26. }
  27. }
  28. }
  29. function getXhr(){
  30. var xhr = null;
  31. if(window.XMLHttpRequest){
  32. xhr = new XMLHttpRequest();
  33. }else{
  34. xhr = new ActiveXObject("Microsoft.XMLHttp");
  35. }
  36. return xhr;
  37. }
  38. </script>
  39. </body>
  40.  
  41. </html>

PHP代码:

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

二    Ajax中的XML格式

html页面:

  1. <html>
  2. <body>
  3. <input type="button" value="Ajax" id="btn">
  4. <script>
  5. var btn = document.getElementById("btn");
  6. btn.onclick = function(){
  7. // 实现Ajax的异步交互
  8. var xhr = getXhr();
  9. xhr.open("post","07.php");
  10. xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
  11. /*
  12. * 如何构建符合XML格式的请求数据
  13. * * 注意
  14. * * 请求数据的格式 - key=value 不能改变的
  15. * * 将value值构建成符合XML格式的数据
  16. * * 数据类型 - 字符串(string)
  17. * * 格式符合XML的语法要求
  18. * * 编写注意
  19. * * 定义变量 - 专门构建XML格式的数据
  20. * * 在send()方法进行拼串
  21. */
  22. var user = "<user><name>zhangwuji</name><pwd>123456</pwd></user>";
  23. xhr.send("user="+user);
  24. xhr.onreadystatechange = function(){
  25. if(xhr.readyState==4&&xhr.status==200){
  26. // 接收服务器端的响应数据
  27. var xmlDoc = xhr.responseXML;
  28. var nameEle = xmlDoc.getElementsByTagName("name")[0];
  29. var txtEle = nameEle.childNodes[0];
  30. console.log(txtEle.nodeValue);
  31. }
  32. }
  33. }
  34. function getXhr(){
  35. var xhr = null;
  36. if(window.XMLHttpRequest){
  37. xhr = new XMLHttpRequest();
  38. }else{
  39. xhr = new ActiveXObject("Microsoft.XMLHttp");
  40. }
  41. return xhr;
  42. }
  43. </script>
  44. </body>
  45.  
  46. </html>

PHP页面代码:

  1. <?php
  2. // 接收客户端发送的请求数据
  3. $user = $_POST['user'];//符合XML格式要求的string类型
  4. //var_dump($user);
  5. // 创建DOMDocument对象
  6. $doc = new DOMDocument();
  7. // 调用loadXML()方法
  8. $result = $doc->loadXML($user);
  9. //var_dump($doc);
  10.  
  11. // 如何构建符合XML格式的数据
  12. /* 修改响应头的Content-Type值为"text/xml"
  13. header('Content-Type:text/xml');
  14. echo $user;// 符合XML格式的string类型
  15. */
  16.  
  17. header('Content-Type:application/xml');
  18. echo $doc->saveXML();
  19. ?>

三   Ajax中的HTML格式

HTML页面:

  1. <html>
  2. <body>
  3. <select id="province">
  4. <option>请选择</option>
  5. <option>山东省</option>
  6. <option>辽宁省</option>
  7. <option>吉林省</option>
  8. </select>
  9. <select id="city">
  10. <option>请选择</option>
  11. </select>
  12. <script>
  13. /*
  14. * 需要思考哪些事情?
  15. * * 在什么时候执行Ajax的异步请求?
  16. * * 当用户选择具体的省份信息时
  17. */
  18. // 1. 为id为province元素绑定onchange事件
  19. var provinceEle = document.getElementById("province");
  20. provinceEle.onchange = function(){
  21. // 清空
  22. var city = document.getElementById("city");
  23. var opts = city.getElementsByTagName("option");
  24. for(var z=opts.length-1;z>0;z--){
  25. city.removeChild(opts[z]);
  26. }
  27.  
  28. if(provinceEle.value != "请选择"){
  29. // 2. 执行Ajax异步请求
  30. var xhr = getXhr();
  31. xhr.open("post","06.php");
  32. xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
  33. xhr.send("provcince="+provinceEle.value);
  34. xhr.onreadystatechange = function(){
  35. if(xhr.readyState==4&&xhr.status==200){
  36. // 接收服务器端的数据内容
  37. var data = xhr.responseText;
  38. // data是字符串,转换为数组
  39. var cities = data.split(",");
  40. for(var i=0;i<cities.length;i++){
  41. var option = document.createElement("option");
  42. var textNode = document.createTextNode(cities[i]);
  43. option.appendChild(textNode);
  44.  
  45. city.appendChild(option);
  46. }
  47. }
  48. }
  49. }
  50.  
  51. }
  52. // 定义创建XMLHttpRequest对象的函数
  53. function getXhr(){
  54. var xhr = null;
  55. if(window.XMLHttpRequest){
  56. xhr = new XMLHttpRequest();
  57. }else{
  58. xhr = new ActiveXObject("Microsoft.XMLHttp");
  59. }
  60. return xhr;
  61. }
  62. </script>
  63. </body>
  64.  
  65. </html>

php页面:

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

三种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. winform datagridview数据显示不全

    如果是内容是汉字,列的宽度设置不够时会自动换行,如果是数字和字母,是不会自动换行的,要把列宽设得足够,整个表格显示不全时,下面会有横向滚动条,如果看不见可能是高度超出了母控件的高度,设得低点就看见了

  2. HDU6298-2018ACM暑假多校联合训练1001-Maximum Multiple

    题意大致是给你一个整数n,让你确定是否有三个正整数x,y,z既能被n整除,又能x+y+z=n,并使xyz最大 从中根据规律可以看出,只有被3或被4整除的数才能满足题目要求 被3整除的最大值为n^3/3 ...

  3. Sublime的一些问题记录

    1.默认的中文字体显示异常(参考:关于最新版的Sublime Text 3中默认的中文字体样式显示异常的问题) 1. 选择Perferences(首选项)--> settings(设置) 2. ...

  4. 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 ...

  5. 理解Javascript_02_执行上下文01

    执行上下文又名执行上下文环境 JS中为什么会产生这个概念呢,先来看一下下面的这段代码: 通过执行发现,第一句代码报了ReferenceError,第二句和第三句代码是undefined,由于undef ...

  6. 关于NPOIExcel导出excel

    1.支持导出多个sheet文件 /// <summary> /// 导出到Excel并下载(html) /// </summary> /// <param name=&q ...

  7. 洛谷P2146 [NOI2015]软件包管理器

    https://www.luogu.org/problemnew/show/P2146 传送门 简单的树链剖分......维护下当前安装了多少个包......修改后查询下就行了......附上极其丑陋 ...

  8. springboot(四)-项目部署

    Springboot和我们之前学习的web应用程序不一样,其本质上是一个java应用程序.部署的方式有两种:打成jar包,或者打成war包. 打成jar包 切换到项目文件中 然后mvn install ...

  9. 前后端分离和restful开发规范

    一.web开发的两种模式 1.前后端不分离 在前后端不分离的应用模式中,前端页面看到的效果都是由后端控制,由后端渲染页面或重定向,也就是后端需要控制前端的展示,前端与后端的耦合度很高. 这种应用模式比 ...

  10. PIE SDK均值滤波

    1.算法功能简介 均值滤波是最常用的线性低通滤波,它均等地对待邻域中的每个像素.对于每个像素,取邻域像素值的平均作为该像素的新值.均值滤波算法简单,计算速度快,对高斯噪声比较有效.从频率域的角度看,相 ...