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 相关文章推荐
新浪新闻小偷
Oct 09 PHP
phpmyadmin操作流程
Oct 09 PHP
php error_log 函数的使用
Apr 13 PHP
纯真IP数据库的应用 IP地址转化成十进制
Jun 14 PHP
PHP 工厂模式使用方法
May 18 PHP
php学习之数据类型之间的转换代码
May 29 PHP
PHP循环结构实例讲解
Feb 10 PHP
ThinkPHP使用心得分享-分页类Page的用法
May 15 PHP
getimagesize获取图片尺寸实例
Nov 15 PHP
php pdo oracle中文乱码的快速解决方法
May 16 PHP
Yii2中hasOne、hasMany及多对多关联查询的用法详解
Feb 15 PHP
php 多继承的几种常见实现方法示例
Nov 18 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
删除无限级目录与文件代码共享
2006/07/12 PHP
PHP 中英文混合排版中处理字符串常用的函数
2007/04/12 PHP
php中显示数组与对象的实现代码
2011/04/18 PHP
PHP及Zend Engine的线程安全模型分析
2011/11/10 PHP
header导出Excel应用示例
2014/01/24 PHP
php中hashtable实现示例分享
2014/02/13 PHP
php根据某字段对多维数组进行排序的方法
2015/03/07 PHP
PHP中preg_match正则匹配中的/u、/i、/s含义
2015/04/17 PHP
查询绑定数据岛的表格中的文本并修改显示方式的js代码
2009/12/15 Javascript
jQuery的学习步骤
2011/02/23 Javascript
jQuery的观察者模式详解
2014/12/22 Javascript
实现音乐播放器的代码(html5+css3+jquery)
2015/08/04 Javascript
直接拿来用的15个jQuery代码片段
2015/09/23 Javascript
Bootstrap每天必学之媒体对象
2015/11/30 Javascript
分享javascript计算时间差的示例代码
2020/03/19 Javascript
详解堆的javascript实现方法
2016/11/29 Javascript
JS三目运算(三元运算)方法详解
2017/03/01 Javascript
Vue 使用 Mint UI 实现左滑删除效果CellSwipe
2018/04/27 Javascript
微信小程序自定义头部导航栏和导航栏背景图片 navigationStyle问题
2019/07/26 Javascript
解决echarts 一条柱状图显示两个值,类似进度条的问题
2020/07/20 Javascript
python操作MySQL数据库的方法分享
2012/05/29 Python
python基础教程之基本数据类型和变量声明介绍
2014/08/29 Python
python解决网站的反爬虫策略总结
2016/10/26 Python
HTML中使用python屏蔽一些基本功能的方法
2017/07/07 Python
python3.x上post发送json数据
2018/03/04 Python
python 通过SSHTunnelForwarder隧道连接redis的方法
2019/02/19 Python
python闭包、深浅拷贝、垃圾回收、with语句知识点汇总
2020/03/11 Python
解决python便携版无法直接运行py文件的问题
2020/09/01 Python
帮一个朋友写的求职信
2014/08/09 职场文书
小学优秀教师先进事迹材料
2014/12/16 职场文书
初中语文教师研修日志
2015/11/13 职场文书
小学思品教学反思
2016/02/20 职场文书
JS异步堆栈追踪之为什么await胜过Promise
2021/04/28 Javascript
pytorch中的numel函数用法说明
2021/05/13 Python
服务器间如何实现文件共享
2022/05/20 Servers
Python使用Beautiful Soup(BS4)库解析HTML和XML
2022/06/05 Python