免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2603 | 回复: 0
打印 上一主题 下一主题

PHP 与 js的通信(via ajax,json) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-11-16 16:07 |只看该作者 |倒序浏览
JavaScript端:

注意:一定要设置xmlHttp.setRequestHeader,否则传往PHP的参数会变成null(line 38)

亮点在line 31!
  1. <script type="text/javascript">
  2.          function GetJson() {
  3.              var xmlHttp;
  4.              try {
  5.                  // Firefox, Opera 8.0+, Safari
  6.                   xmlHttp = new XMLHttpRequest();
  7.              }
  8.              catch (e) {
  9.                  // Internet Explorer
  10.                   try {
  11.                      xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
  12.                  }
  13.                  catch (e) {

  14.                      try {
  15.                          xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
  16.                      }
  17.                      catch (e) {
  18.                          alert("您的浏览器不支持AJAX!");
  19.                          return false;
  20.                      }
  21.                  }
  22.              }

  23.              xmlHttp.onreadystatechange = function() {
  24.                  if (xmlHttp.readyState == 4) {
  25.                      //alert(xmlHttp.responseText);
  26.                      var str = xmlHttp.responseText;
  27.                      document.getElementById('show').innerHTML +=str;
  28.                      //alert(str);
  29.                      var obj = eval('('+ xmlHttp.responseText +')');
  30.                      //var obj = eval(({"id":"123","name":"elar","age":"21"}));
  31.                      alert(obj.name);
  32.                  }
  33.              }
  34.              var data = "id=123";
  35.              xmlHttp.open("POST", "testJson.php", true);
  36.              xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
  37.              xmlHttp.send("id=123");
  38.          }
  39. </script>
  40. <input type="button" onclick="GetJson()" value="按我!"/>
  41. <hr />
  42. <div id="show"></div>
复制代码
PHP端【testJson.php】:

(注意,php文件要干净,<?php ?>标签的外部不能有其他标签,否则eval函数无法解析)

亮点在line 6
  1. <?php
  2. $res['id'] = $_POST['id'];
  3. $res['name'] = "elar";
  4. $res['age'] = "21";
  5. $response = "hello this is response".$_POST['id'];
  6. echo json_encode($res);
  7. ?>
复制代码
总结:

js要往PHP端送数据,用的是xmlHttp.send("id=123");

PHP给js送数据,用的是echo json_encode($res);(要注意变量$res的构造应符合JSON的规范)

js要解析PHP送来的JSON格式的数据,用var obj = eval('('+ xmlHttp.responseText +')');
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP