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的配置文件php.ini
Oct 09 PHP
php中通过smtp发邮件的类,测试通过
Jan 22 PHP
PHP 木马攻击防御技巧
Jun 13 PHP
PHP 中文乱码解决办法总结分析
Jul 30 PHP
PHP批量上传图片的具体实现方法介绍.
Feb 26 PHP
CodeIgniter CLI模式简介
Jun 17 PHP
php使用Cookie控制访问授权的方法
Jan 21 PHP
PHP使用ffmpeg给视频增加字幕显示的方法
Mar 12 PHP
PHP中的一些常用函数收集
May 26 PHP
PHP实现微信公众号验证Token的示例代码
Dec 16 PHP
PHP+fiddler抓包采集微信文章阅读数点赞数的思路详解
Dec 20 PHP
PHP中的输出echo、print、printf、sprintf、print_r和var_dump的示例代码
Dec 01 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
phpfans留言版用到的数据操作类和分页类
2007/01/04 PHP
php设计模式  Command(命令模式)
2011/06/17 PHP
php实现QQ空间获取当前用户的用户名并生成图片
2015/07/25 PHP
/etc/php-fpm.d/www.conf 配置注意事项
2017/02/04 PHP
php计数排序算法的实现代码(附四个实例代码)
2020/03/31 PHP
自动更新作用
2006/10/08 Javascript
jquery一句话全选/取消全选
2011/03/01 Javascript
基于jquery的设置页面文本框 只能输入数字的实现代码
2011/04/19 Javascript
jquery mobile实现拨打电话功能的几种方法
2013/08/05 Javascript
jquery 合并内容相同的单元格(示例代码)
2013/12/13 Javascript
超简单JS二级、多级联动的简单实例
2014/02/18 Javascript
jquery中push()的用法(数组添加元素)
2014/11/25 Javascript
JavaScript电子时钟倒计时
2016/01/09 Javascript
vue.js路由跳转详解
2017/08/28 Javascript
wepy--用vantUI 实现上弹列表并选择相应的值操作
2020/11/03 Javascript
[15:23]教你分分钟做大人:虚空假面
2014/10/30 DOTA
python中函数传参详解
2016/07/03 Python
python中星号变量的几种特殊用法
2016/09/07 Python
python编写微信远程控制电脑的程序
2018/01/05 Python
python实现隐马尔科夫模型HMM
2018/03/25 Python
Python用字典构建多级菜单功能
2019/07/11 Python
利用rest framework搭建Django API过程解析
2019/08/31 Python
Python 程序报错崩溃后如何倒回到崩溃的位置(推荐)
2020/06/23 Python
基于Python的身份证验证识别和数据处理详解
2020/11/14 Python
selenium+python实现基本自动化测试的示例代码
2021/01/27 Python
浅析CSS3 用text-overflow解决文字排版问题
2020/10/28 HTML / CSS
世界上最大的餐具公司:Oneida
2016/12/17 全球购物
Chain Reaction Cycles俄罗斯:世界上最大的在线自行车商店
2019/08/27 全球购物
简述网络文件系统NFS,并说明其作用
2016/10/19 面试题
结婚周年感言
2014/02/24 职场文书
2014年图书馆个人工作总结
2014/12/18 职场文书
优秀少先队辅导员事迹材料
2014/12/24 职场文书
党员转正申请报告
2015/05/15 职场文书
2015年环境监察工作总结
2015/07/23 职场文书
2019职场实习报告该怎么写?
2019/07/01 职场文书
Kubernetes中Deployment的升级与回滚
2022/04/01 Servers