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实现维护文件代码
Jun 14 PHP
Php Cookie的一个使用注意点
Nov 08 PHP
Ajax PHP 边学边练 之三 数据库
Nov 26 PHP
在PHP中养成7个面向对象的好习惯
Jul 17 PHP
PHP mb_convert_encoding文字编码的转换函数介绍
Nov 10 PHP
浏览器关闭后,能继续执行的php函数(ignore_user_abort)
Aug 01 PHP
检测codeigniter脚本消耗内存情况的方法
Mar 21 PHP
PHP使用内置函数file_put_contents写入文件及追加内容的方法
Dec 07 PHP
PHP计算数组中值的和与乘积的方法(array_sum与array_product函数)
Apr 01 PHP
PHP ADODB生成下拉列表框功能示例
May 29 PHP
PHP与Perl之间知识点区别整理
Mar 19 PHP
在 Laravel 6 中缓存数据库查询结果的方法
Dec 11 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判断搜索引擎蜘蛛并自动记忆到文件的代码
2012/02/04 PHP
smarty模板中拼接字符串的方法
2014/02/14 PHP
PHP Imagick完美实现图片裁切、生成缩略图、添加水印
2016/02/22 PHP
PHP从二维数组得到N层分类树的实现代码
2016/10/11 PHP
PHP命令空间namespace及use的用法小结
2017/11/27 PHP
PHP fprintf()函数用法讲解
2019/02/16 PHP
解决Jquery鼠标经过不停滑动的问题
2014/03/03 Javascript
js数值计算时使用parseInt进行数据类型转换(jquery)
2014/10/07 Javascript
浅谈javascript中return语句
2015/07/15 Javascript
Bootstrap轮播加上css3动画,炫酷到底!
2015/12/22 Javascript
vue.js父组件使用外部对象的方法示例
2017/04/25 Javascript
AngularJS实现单一页面内设置跳转路由的方法
2017/06/28 Javascript
JS自定义滚动条效果简单实现代码
2020/10/27 Javascript
通过button将form表单的数据提交到action层的实例
2017/09/08 Javascript
Express + Session 实现登录验证功能
2017/09/08 Javascript
jQuery+datatables插件实现ajax加载数据与增删改查功能示例
2018/04/17 jQuery
vue-router3.0版本中 router.push 不能刷新页面的问题
2018/05/10 Javascript
JavaScript 防抖和节流遇见的奇怪问题及解决
2020/11/20 Javascript
[01:04:32]DOTA2-DPC中国联赛 正赛 Aster vs LBZS BO3 第二场 2月23日
2021/03/11 DOTA
Python实现运行其他程序的四种方式实例分析
2017/08/17 Python
美国最大的网络男装服装品牌:Bonobos
2017/05/25 全球购物
CAT鞋美国官网:CAT Footwear
2017/11/27 全球购物
请写出 BOOL flag 与"零值"比较的 if 语句
2016/02/29 面试题
什么是事务?事务有哪些性质?
2012/03/11 面试题
前厅收银主管岗位职责
2014/02/04 职场文书
材料专业毕业生求职信
2014/02/26 职场文书
社区禁毒工作方案
2014/06/02 职场文书
普通党员对照检查材料
2014/08/28 职场文书
雨花台导游词
2015/02/06 职场文书
护士先进个人总结
2015/02/13 职场文书
优秀英文求职信范文
2015/03/19 职场文书
会议主持词开场白
2015/05/28 职场文书
城南旧事观后感
2015/06/11 职场文书
pytorch 带batch的tensor类型图像显示操作
2021/05/20 Python
Java中的继承、多态以及封装
2022/04/11 Java/Android
Win11 KB5015814遇安装失败 影响开始菜单性能解决方法
2022/07/15 数码科技