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 相关文章推荐
用header 发送cookie的php代码
Mar 16 PHP
PHP中Date获取时间不正确怎么办
Jun 05 PHP
php adodb连接不同数据库
Mar 19 PHP
PHP 替换模板变量实现步骤
Aug 24 PHP
解析php中session的实现原理以及大网站应用应注意的问题
Jun 17 PHP
基于xcache的配置与使用详解
Jun 18 PHP
PHP实现绘制3D扇形统计图及图片缩放实例
Oct 01 PHP
curl和libcurl的区别简介
Jul 01 PHP
如何使用GDB调试PHP程序
Dec 08 PHP
3种方法轻松处理php开发中emoji表情的问题
Jul 18 PHP
php面向对象之反射功能与用法分析
Mar 29 PHP
php+lottery.js实现九宫格抽奖功能
Jul 21 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将文本文件转换csv输出的方法
2014/12/31 PHP
php抽奖概率算法(刮刮卡,大转盘)
2020/04/17 PHP
Laravel框架Auth用户认证操作实例分析
2019/09/29 PHP
极酷的javascirpt,让你随意编辑任何网页
2007/02/25 Javascript
IE 下的只读 innerHTML
2009/08/21 Javascript
javascript 面向对象全新理练之数据的封装
2009/12/03 Javascript
浅析jquery的作用与优势
2013/12/02 Javascript
判断JS对象是否拥有某种属性的两种方式
2013/12/02 Javascript
javascript实现回到顶部特效
2015/05/06 Javascript
深入解析js轮播插件核心代码的实现过程
2017/04/14 Javascript
React组件之间的通信的实例代码
2017/06/27 Javascript
Mongoose中document与object的区别示例详解
2017/09/18 Javascript
详解vue中点击空白处隐藏div的实现(用指令实现)
2018/04/19 Javascript
js中split()方法得到的数组长度问题
2018/07/19 Javascript
JavaScript生成随机验证码代码实例
2019/09/28 Javascript
在Layui中操作数据表格,给指定单元格添加事件示例
2019/10/26 Javascript
JS实现星星海特效
2019/12/24 Javascript
Element-ui树形控件el-tree自定义增删改和局部刷新及懒加载操作
2020/08/31 Javascript
[01:00:22]DOTA2-DPC中国联赛定级赛 LBZS vs Magma BO3第三场 1月10日
2021/03/11 DOTA
tensorflow学习笔记之简单的神经网络训练和测试
2018/04/15 Python
PyTorch上搭建简单神经网络实现回归和分类的示例
2018/04/28 Python
Python matplotlib通过plt.scatter画空心圆标记出特定的点方法
2018/12/13 Python
python实现自动获取IP并发送到邮箱
2018/12/26 Python
python正则表达式匹配IP代码实例
2019/12/28 Python
深入浅析Python 命令行模块 Click
2020/03/11 Python
解决pyPdf和pyPdf2在合并pdf时出现异常的问题
2020/04/03 Python
浅谈Python爬虫原理与数据抓取
2020/07/21 Python
CSS3中box-shadow的用法介绍
2015/07/15 HTML / CSS
大学生标准推荐信范文
2013/11/25 职场文书
高中毕业自我鉴定
2013/12/22 职场文书
材料专业毕业生求职信
2014/02/26 职场文书
上课说话检讨书500字
2014/11/01 职场文书
2014年防汛工作总结
2014/12/08 职场文书
幼儿园托班开学寄语(2016秋季)
2015/12/03 职场文书
python3读取文件指定行的三种方法
2021/05/24 Python
win10忘记pin密码登录不了怎么办?win10忘记pin密码登不进去的解决方法
2022/07/07 数码科技