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 和 MySQL 基础教程(三)
Oct 09 PHP
php使用curl存储cookie的示例
Mar 31 PHP
不使用php api函数实现数组的交换排序示例
Apr 13 PHP
PHP中$_SERVER使用说明
Jul 05 PHP
PHP5.6新增加的可变函数参数用法分析
Aug 25 PHP
phpStudy配置多站点多域名方法及遇到的403错误解决方法
Oct 19 PHP
PHP折半(二分)查找算法实例分析
May 12 PHP
php通过各种函数判断0和空
Jul 04 PHP
thinkPHP5框架实现基于ajax的分页功能示例
Jun 12 PHP
PHP hebrev()函数用法讲解
Feb 21 PHP
tp5.1 框架路由操作-URL生成实例分析
May 26 PHP
PHP dirname(__FILE__)原理及用法解析
Oct 28 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 MYSQL中插入当前时间
2008/04/06 PHP
PHP中英混合字符串截取函数代码
2011/07/17 PHP
php 抽象类的简单应用
2011/09/06 PHP
php文件上传、下载和删除示例
2020/08/28 PHP
thinkphp下MySQL数据库读写分离代码剖析
2017/04/18 PHP
如何实现textarea里的不同文本显示不同颜色
2014/01/20 Javascript
jquery中load方法的用法及注意事项说明
2014/02/22 Javascript
引入autocomplete组件时JS报未结束字符串常量错误
2014/03/19 Javascript
用JavaScript实现一个代码简洁、逻辑不复杂的多级树
2014/05/23 Javascript
JS实现可直接显示网页代码运行效果的HTML代码预览功能实例
2015/08/06 Javascript
javascript下拉列表菜单的实现方法
2015/11/18 Javascript
JavaScript重载函数实例剖析
2016/05/13 Javascript
Bootstrap学习笔记 轮播(Carousel)插件
2017/03/21 Javascript
Vue Socket.io源码解读
2018/02/07 Javascript
JS点击动态添加标签、删除指定标签的代码
2018/04/18 Javascript
Vue动态控制input的disabled属性的方法
2018/06/26 Javascript
NodeJS实现同步的方法
2019/03/02 NodeJs
Vue运用transition实现过渡动画
2019/05/06 Javascript
Node.js HTTP服务器中的文件、图片上传的方法
2019/09/23 Javascript
详解小程序云开发攻略(解决最棘手的问题)
2019/09/30 Javascript
详解element-ui级联菜单(城市三级联动菜单)和回显问题
2019/10/02 Javascript
微信小程序多列表渲染数据开关互不影响的实现
2020/06/05 Javascript
Python打包文件夹的方法小结(zip,tar,tar.gz等)
2016/09/18 Python
一个基于flask的web应用诞生 组织结构调整(7)
2017/04/11 Python
Python多进程库multiprocessing中进程池Pool类的使用详解
2017/11/24 Python
Python中生成器和迭代器的区别详解
2018/02/10 Python
Python3爬虫使用Fidder实现APP爬取示例
2018/11/27 Python
python+mysql实现学生信息查询系统
2019/02/21 Python
python如何实现不用装饰器实现登陆器小程序
2019/12/14 Python
Python实现序列化及csv文件读取
2020/01/19 Python
python实现时间序列自相关图(acf)、偏自相关图(pacf)教程
2020/06/03 Python
python求numpy中array按列非零元素的平均值案例
2020/06/08 Python
pyqt5 textEdit、lineEdit操作的示例代码
2020/08/12 Python
作弊检讨书1000字
2014/02/01 职场文书
统计岗位职责
2014/02/21 职场文书
乡镇务虚会发言材料
2014/10/20 职场文书