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 相关文章推荐
PHP5.0正式发布 不完全兼容PHP4 新增多项功能
Oct 09 PHP
PHP的面试题集,附我的答案和分析(一)
Nov 19 PHP
Windows2003 下 MySQL 数据库每天自动备份
Dec 21 PHP
收集的DedeCMS一些使用经验
Mar 17 PHP
ZF等常用php框架中存在的问题
Jan 10 PHP
关于php支持分块与断点续传文件下载功能代码
May 09 PHP
php异常处理方法实例汇总
Jun 24 PHP
PHP函数实现从一个文本字符串中提取关键字的方法
Jul 01 PHP
纯PHP代码实现支付宝批量付款
Dec 24 PHP
Yii2.0中的COOKIE和SESSION用法
Aug 12 PHP
PHP 的Opcache加速的使用方法
Dec 29 PHP
PHP实现字符串大小写转函数的功能实例
Feb 06 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使用eAccelerator的API开发详解
2013/06/09 PHP
PHP异常处理定义与使用方法分析
2017/07/25 PHP
JS截取字符串常用方法整理及使用示例
2013/10/18 Javascript
jsonp原理及使用
2013/10/28 Javascript
把字符串按照特定的字母顺序进行排序的js代码
2014/01/28 Javascript
node.js中的fs.futimes方法使用说明
2014/12/17 Javascript
javascript运算符语法全面概述
2016/07/14 Javascript
原生js实现网页顶部自动下拉/收缩广告效果
2017/01/20 Javascript
vue.js element-ui validate中代码不执行问题解决方法
2017/12/18 Javascript
JS设计模式之访问者模式定义与用法分析
2018/02/05 Javascript
详解React之父子组件传递和其它一些要点
2018/06/25 Javascript
Bootstrap table表格初始化表格数据的方法
2018/07/25 Javascript
koa2实现登录注册功能的示例代码
2018/12/03 Javascript
更优雅的微信小程序骨架屏实现详解
2019/08/07 Javascript
[02:24]DOTA2痛苦女王 英雄基础教程
2013/11/26 DOTA
[56:00]2018DOTA2亚洲邀请赛 4.6 淘汰赛 VP vs TNC 第二场
2018/04/10 DOTA
在Django的form中使用CSS进行设计的方法
2015/07/18 Python
python安装numpy&amp;安装matplotlib&amp; scipy的教程
2017/11/02 Python
python新手学习使用库
2020/06/11 Python
python tkiner实现 一个小小的图片翻页功能的示例代码
2020/06/24 Python
keras实现VGG16 CIFAR10数据集方式
2020/07/07 Python
Python 如何操作 SQLite 数据库
2020/08/17 Python
详解Python中import机制
2020/09/11 Python
用Python制作音乐海报
2021/01/26 Python
详解通过focusout事件解决IOS键盘收起时界面不归位的问题
2019/07/18 HTML / CSS
自荐信如何“自荐”
2013/10/24 职场文书
教师实习自我鉴定
2013/12/11 职场文书
大学生咖啡店创业计划书
2014/01/21 职场文书
班主任工作经验材料
2014/02/02 职场文书
上班玩游戏检讨书
2014/02/07 职场文书
《值日生》教学反思
2014/02/17 职场文书
我的中国梦演讲稿高中篇
2014/08/19 职场文书
来探秘“德国中小企业”的成功之道
2019/07/26 职场文书
查看nginx配置文件路径和资源文件路径的方法
2021/03/31 Servers
CocosCreator ScrollView优化系列之分帧加载
2021/04/14 Python
 python中的元类metaclass详情
2022/05/30 Python