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的类树(支持无限分类)
Oct 09 PHP
模仿OSO的论坛(四)
Oct 09 PHP
php 清除网页病毒的方法
Dec 05 PHP
php使用pack处理二进制文件的方法
Jul 03 PHP
PHP列出MySQL中所有数据库的方法
Mar 12 PHP
php时间计算相关问题小结
May 09 PHP
PHP微信刮刮卡 附微信接口
Jul 22 PHP
Apache PHP MySql安装配置图文教程
Aug 27 PHP
php抽象方法和抽象类实例分析
Dec 07 PHP
Laravel实现表单提交
May 07 PHP
laravel5.6 框架操作数据 Eloquent ORM用法示例
Jan 26 PHP
PHP设计模式概论【概念、分类、原则等】
May 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
php下实现在指定目录搜索指定类型文件的函数
2008/10/03 PHP
PHP数据库操作之基于Mysqli的数据库操作类库
2014/04/19 PHP
destoon实现会员商铺中指定会员或会员组投放广告的方法
2014/08/21 PHP
PHP实现的简单AES加密解密算法实例
2017/05/29 PHP
Ajax请求PHP后台接口返回信息的实例代码
2018/08/21 PHP
smarty模板的使用方法实例分析
2019/09/18 PHP
jquery一句话全选/取消全选
2011/03/01 Javascript
jquery实现预览提交的表单代码分享
2014/05/21 Javascript
当前流行的JavaScript代码风格指南
2014/09/10 Javascript
jQuery层级选择器用法分析
2015/02/10 Javascript
NodeJS中利用Promise来封装异步函数
2015/02/25 NodeJs
javascript实现在线客服效果
2015/07/15 Javascript
基于Flowplayer打造一款免费的WEB视频播放器附源码
2015/09/06 Javascript
纯javascript移动优先的幻灯片效果
2015/11/02 Javascript
js流动式效果显示当前系统时间
2016/05/16 Javascript
js 动态添加元素(div、li、img等)及设置属性的方法
2016/07/19 Javascript
JavaScript使用Range调色及透明度实例
2016/09/25 Javascript
Vue学习笔记进阶篇之多元素及多组件过渡
2017/07/19 Javascript
vue实现固定位置显示功能
2019/05/30 Javascript
使用PreloadJS加载图片资源的基础方法详解
2020/02/03 Javascript
jQuery是用来干什么的 jquery其实就是一个js框架
2021/02/04 jQuery
浅谈django rest jwt vue 跨域问题
2018/10/26 Python
python @classmethod 的使用场合详解
2019/08/23 Python
Eclipse配置python默认头过程图解
2020/04/26 Python
Python3合并两个有序数组代码实例
2020/08/11 Python
python中@contextmanager实例用法
2021/02/07 Python
乐天旅游香港网站:日本饭店预订
2017/11/29 全球购物
英国汽车零件购物网站:GSF Car Parts
2019/05/23 全球购物
Berghaus官网:户外服装和设备,防水服
2020/01/17 全球购物
综合办公室个人的自我评价
2013/12/22 职场文书
优秀党员主要事迹
2014/01/19 职场文书
校园绿化美化方案
2014/06/08 职场文书
2015年留守儿童工作总结
2015/05/22 职场文书
大学班干部竞选稿
2015/11/20 职场文书
七年级作文之雪景
2019/11/18 职场文书
Nginx反爬虫策略,防止UA抓取网站
2021/03/31 Servers