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 相关文章推荐
Zend引擎的发展 [15]
Oct 09 PHP
DedeCMS dede_channeltype表字段注释
Apr 07 PHP
使用Smarty 获取当前日期时间和格式化日期时间的方法详解
Jun 18 PHP
php图片处理函数获取类型及扩展名实例
Nov 19 PHP
CodeIgniter与PHP5.6的兼容问题
Jul 16 PHP
PHP简单判断字符串是否包含另一个字符串的方法
Mar 25 PHP
Yii2 rbac权限控制之菜单menu实例教程
Apr 28 PHP
PHP7常量数组用法分析
Sep 26 PHP
php微信开发之自定义菜单完整流程
Oct 08 PHP
Ajax实现对静态页面的文章访问统计功能示例
Oct 10 PHP
PHP实现二维数组去重功能示例
Jan 12 PHP
Linux服务器下PHPMailer发送邮件失败的问题解决
Mar 04 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
Terran剧情介绍
2020/03/14 星际争霸
echo(),print(),print_r()之间的区别?
2006/11/19 PHP
PHP chmod 函数与批量修改文件目录权限
2010/05/10 PHP
Memcached常用命令以及使用说明详解
2013/06/27 PHP
PHP中使用strpos函数实现屏蔽敏感关键字功能
2014/08/21 PHP
为PHP安装imagick时出现Cannot locate header file MagickWand.h错误的解决方法
2014/11/03 PHP
laravel-admin 在列表页添加自定义按钮的例子
2019/09/30 PHP
JavaScript CSS修改学习第三章 修改样式表
2010/02/19 Javascript
extjs 的权限问题 要求控制的对象是 菜单,按钮,URL
2010/03/09 Javascript
JavaScript高级程序设计 事件学习笔记
2011/09/10 Javascript
检测input每次的输入是否合法遇到汉字输入就有问题
2012/05/23 Javascript
JS、DOM和JQuery之间的关系示例分析
2014/04/09 Javascript
用js闭包的方法实现多点标注冒泡示例
2014/05/29 Javascript
javascript学习笔记(八)正则表达式
2014/10/08 Javascript
Bootstrap每天必学之滚动监听
2016/03/16 Javascript
Angular.JS实现无限级的联动菜单(使用demo)
2017/02/08 Javascript
JS实现的全排列组合算法示例
2017/10/09 Javascript
浅谈Postman解决token传参的问题
2018/03/31 Javascript
vue项目base64字符串转图片的实现代码
2018/07/13 Javascript
vue 解决form表单提交但不跳转页面的问题
2019/10/30 Javascript
使用Python的内建模块collections的教程
2015/04/28 Python
详解Python下ftp上传文件linux服务器
2018/06/21 Python
使用pandas read_table读取csv文件的方法
2018/07/04 Python
超简单的Python HTTP服务
2019/07/22 Python
Python Django 简单分页的实现代码解析
2019/08/21 Python
为什么说Python可以实现所有的算法
2019/10/04 Python
django admin 根据choice字段选择的不同来显示不同的页面方式
2020/05/13 Python
用python计算文件的MD5值
2020/12/23 Python
css3给背景图片加颜色遮罩的方法
2019/11/05 HTML / CSS
什么是Linux虚拟文件系统VFS
2015/08/25 面试题
市场部规章制度
2014/01/24 职场文书
运动会邀请函范文
2014/02/06 职场文书
《满井游记》教学反思
2014/02/26 职场文书
小学一年级评语大全
2014/04/22 职场文书
文艺晚会开场白
2015/05/29 职场文书
Redis+AOP+自定义注解实现限流
2022/06/28 Redis