Ajax中的JSON格式与php传输过程全面解析


Posted in PHP onNovember 14, 2017

在Ajax中的JSON格式与php传输过程中有哪些要注意的小地方呢?

先来看一下简单通用的JSON与php传输数据的代码

HTML文件:

<input type="button" value="Ajax" id="btn">
 <script>
  var btn = document.getElementById("btn");
  btn.onclick = function(){
    var xhr = getXhr();
    xhr.open("post","测试.php");
    xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
     
    var user = '{"name":"zhangwuji","pwd":"123456"}';
    xhr.send("user="+user);
    xhr.onreadystatechange = function(){
      if(xhr.readyState==4&&xhr.status==200){
        var data = xhr.responseText;
        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>

在整个过程中先要获得AJAX对象,然后用POST请求方式与PHP文件连接,这时候用的是POST方法请求数据,所以这时候还要加上一个请求文件头

xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");这是固定写法直接记下来就可以了。<br><br>上面的是测试代码,创建一个json格式的字符串并用SEND方法传入PHP:

var user = '{"name":"zhangwuji","pwd":"123456"}';

        xhr.send("user="+user);<br><br>这时候要注意了,在构建JSON字符串传输的时候user里面的字符串外面要用单引,里面用双引,不然php那边是不认为你这是JSON 不能正确的进行解析。<br><br><br>这时候看看PHP文件里的代码:

<?php
  // 接收客户端发送的请求数据
  $user = $_POST['user'];
  // 就是一个JSON格式的string字符串

  $json_user = json_decode($user,true);//对json格式的字符串进行解码,转换成PHP变量格式

  // 2. 使用json_encode()函数
  echo json_encode($json_user);//对php变量格式进行编码,转换成JSON格式
?>

json_decode 和json_encode大家从字面的意思都应该可以看出来一点,decode在这这里的作用就是

对json格式的字符串进行解码,转换成PHP变量格式

而encode就是

对php变量格式进行编码,转换成JSON格式在传输回去;

这时候PHP 文件的工作已经结束了,让我们在回到HTML文件看接受数据的onreadystatechange这一块的代码

var data = xhr.responseText;   虽然PHP文件传输回来的是一个JSON格式,但是我们这里接受用的是respenseText所以接收到的只是一个文本格式的字符串<br>这时候我们还要用eval();函数将其转换成JSON格式

* 使用eval()函数进行转换
         使用"()"将其包裹,eval()函数强制将其转换为JSON格式(javascript代码)
         不使用"()"将其包裹,eval()函数将其识别为一个空的代码块

总结

以上所述是小编给大家介绍的Ajax中的JSON格式与php传输过程全面解析,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

PHP 相关文章推荐
PHP动态变静态原理
Nov 25 PHP
不要轻信 PHP_SELF的安全问题
Sep 05 PHP
备份mysql数据库的php代码(一个表一个文件)
May 28 PHP
PHP中json_encode、json_decode与serialize、unserialize的性能测试分析
Jun 09 PHP
二招解决php乱码问题
Mar 25 PHP
php三维数组去重(示例代码)
Nov 26 PHP
php调整gif动画图片尺寸示例代码分享
Dec 05 PHP
PHP_SELF,SCRIPT_NAME,REQUEST_URI区别
Dec 24 PHP
十幅图告诉你什么是PHP引用
Feb 22 PHP
利用PHP如何实现Socket服务器
Sep 23 PHP
php实现36进制与10进制转换功能示例
Jan 10 PHP
php显示页码分页类的封装
Jun 08 PHP
PHP基于imagick扩展实现合成图片的两种方法【附imagick扩展下载】
Nov 14 #PHP
Laravel Intervention/image图片处理扩展包的安装、使用与可能遇到的坑详解
Nov 14 #PHP
PHP中递归的实现实例详解
Nov 14 #PHP
利用Homestead快速运行一个Laravel项目的方法详解
Nov 14 #PHP
PHP对称加密算法(DES/AES)类的实现代码
Nov 14 #PHP
浅谈PHP中如何实现Hook机制
Nov 14 #PHP
PHP实现将几张照片拼接到一起的合成图片功能【便于整体打印输出】
Nov 14 #PHP
You might like
PHP实现的猴王算法(猴子选大王)示例
2018/04/30 PHP
PHP保存Base64图片base64_decode的问题整理
2019/11/04 PHP
[原创]保存的js无法执行的解决办法
2007/02/25 Javascript
JavaScript 的方法重载效果
2009/08/07 Javascript
XHTML下,JS浮动代码失效的问题
2009/11/12 Javascript
jQuery源码分析-03构造jQuery对象-工具函数
2011/11/14 Javascript
使用jquery实现简单的ajax
2013/07/08 Javascript
关于Jquery操作Cookie取值错误的解决方法
2013/08/26 Javascript
js跨域访问示例(客户端/服务端)
2014/05/19 Javascript
js实现鼠标悬停图片上时滚动文字说明的方法
2015/02/17 Javascript
js日期范围初始化得到前一个月日期的方法
2015/05/05 Javascript
JavaScript中停止执行setInterval和setTimeout事件的方法
2015/05/14 Javascript
JS中使用正则表达式g模式和非g模式的区别
2017/04/01 Javascript
Angular中自定义Debounce Click指令防止重复点击
2017/07/26 Javascript
Vue+Element使用富文本编辑器的示例代码
2017/08/14 Javascript
五步轻松实现zTree的使用
2017/11/01 Javascript
r.js来合并压缩css文件的示例
2018/04/26 Javascript
利用原生的JavaScript实现简单拼图游戏
2018/11/18 Javascript
基于javascript的拖拽类封装详解
2019/04/19 Javascript
如何在项目中使用log4.js的方法步骤
2019/07/16 Javascript
深入理解Vue keep-alive及实践总结
2019/08/21 Javascript
Javascript实现简易天数计算器
2020/05/18 Javascript
[40:05]DOTA2上海特级锦标赛A组小组赛#1 EHOME VS MVP.Phx第一局
2016/02/25 DOTA
python让列表倒序输出的实例
2018/06/25 Python
Python数据类型之String字符串实例详解
2019/05/08 Python
Python3-异步进程回调函数(callback())介绍
2020/05/02 Python
基于logstash实现日志文件同步elasticsearch
2020/08/06 Python
css3中用animation的steps属性制作帧动画
2019/04/25 HTML / CSS
印度排名第一的蛋糕、鲜花和礼品送货:Winni
2019/08/02 全球购物
欧洲最大的预定车位市场:JustPark
2020/01/06 全球购物
环保倡议书500字
2014/05/15 职场文书
2014年网络管理员工作总结
2014/12/01 职场文书
校本培训个人总结
2015/02/28 职场文书
2015教师年度工作总结范文
2015/04/07 职场文书
《鸟的天堂》教学反思
2016/02/19 职场文书
javascript函数式编程基础
2021/09/15 Javascript