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中变量及部分适用方法
Mar 27 PHP
dedecms函数分享之获取某一栏目所有子栏目
May 19 PHP
PHP中常用的输出函数总结
Sep 22 PHP
php随机生成数字字母组合的方法
Mar 18 PHP
php递归实现无限分类的方法
Jul 28 PHP
php基础设计模式大全(注册树模式、工厂模式、单列模式)
Aug 31 PHP
PHP自动补全表单的两种方法
Mar 06 PHP
详解php中serialize()和unserialize()函数
Jul 08 PHP
PHP使用glob方法遍历文件夹下所有文件的实例
Oct 17 PHP
JS(jQuery)实现聊天接收到消息语言自动提醒功能详解【提示“您有新的消息请注意查收”】
Apr 16 PHP
laravel 使用事件系统统计浏览量的实现
Oct 16 PHP
解决Laravel无法使用COOKIE和SESSION的问题
Oct 16 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 email邮箱正则
2008/10/08 PHP
PHP 出现乱码和Sessions验证问题的解决方法!
2008/12/06 PHP
Laravel中七个非常有用但很少人知道的Carbon方法
2017/09/21 PHP
通过JAVASCRIPT读取ASP设定的COOKIE
2007/02/15 Javascript
js jquery做的图片连续滚动代码
2008/01/06 Javascript
js+ajax实现获取文件大小的方法
2015/12/08 Javascript
jQuery的promise与deferred对象在异步回调中的作用
2016/05/03 Javascript
Nodejs获取网络数据并生成Excel表格
2020/03/31 NodeJs
三种带箭头提示框总结实例
2016/06/14 Javascript
微信小程序 数据绑定详解及实例
2016/10/25 Javascript
详解AngularJs HTTP响应拦截器实现登陆、权限校验
2017/04/11 Javascript
jQuery实现导航栏头部菜单项点击后变换颜色的方法
2017/07/19 jQuery
vue 优化CDN加速的方法示例
2018/09/19 Javascript
小程序scroll-view组件实现滚动的示例代码
2018/09/20 Javascript
[00:35]DOTA2上海特级锦标赛 Newbee战队宣传片
2016/03/03 DOTA
简明 Python 基础学习教程
2007/02/08 Python
用Python和MD5实现网站挂马检测程序
2014/03/13 Python
Python实现网站文件的全备份和差异备份
2014/11/30 Python
python存储16bit和32bit图像的实例
2018/12/05 Python
python的pygal模块绘制反正切函数图像方法
2019/07/16 Python
Django 多表关联 存储 使用方法详解 ManyToManyField save
2019/08/09 Python
Python面向对象原理与基础语法详解
2020/01/02 Python
tensorflow 只恢复部分模型参数的实例
2020/01/06 Python
python 两个一样的字符串用==结果为false问题的解决
2020/03/12 Python
python属于解释语言吗
2020/06/11 Python
新手学python应该下哪个版本
2020/06/11 Python
使用sublime text3搭建Python编辑环境的实现
2021/01/12 Python
html5跨域通讯之postMessage的用法总结
2013/11/07 HTML / CSS
Ralph Lauren英国官方网站:Ralph Lauren UK
2018/04/03 全球购物
法国设计制造的扫帚和刷子:Andrée Jardin
2018/12/06 全球购物
戴尔马来西亚官网:Dell Malaysia
2020/05/02 全球购物
办公室助理岗位职责
2013/12/25 职场文书
童装店创业计划书
2014/01/09 职场文书
服务标兵事迹材料
2014/05/04 职场文书
2015年小学教科研工作总结
2015/07/20 职场文书
python实现腾讯滑块验证码识别
2021/04/27 Python