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 相关文章推荐
通过JavaScript或PHP检测Android设备的代码
Mar 09 PHP
PHP 多维数组的排序问题 根据二维数组中某个项排序
Nov 09 PHP
PHP随机生成随机个数的字母组合示例
Jan 14 PHP
php操作redis中的hash和zset类型数据的方法和代码例子
Jul 05 PHP
在Ubuntu 14.04上部署 PHP 环境及 WordPress
Sep 02 PHP
php读取flash文件高宽帧数背景颜色的方法
Jan 06 PHP
php通过array_push()函数添加多个变量到数组末尾的方法
Mar 18 PHP
php+curl 发送图片处理代码分享
Jul 09 PHP
php实现当前页面点击下载文件的实例代码
Nov 16 PHP
yii 2.0中表单小部件的使用方法示例
May 23 PHP
php实现的redis缓存类定义与使用方法示例
Aug 09 PHP
php框架知识点的整理和补充
Mar 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 MVC模式在网站架构中的实现分析
2010/03/04 PHP
php+xml实现在线英文词典查询的方法
2015/01/23 PHP
PHPExcel读取EXCEL中的图片并保存到本地的方法
2015/02/14 PHP
PHP设计模式(七)组合模式Composite实例详解【结构型】
2020/05/02 PHP
推荐30个新鲜出炉的精美 jQuery 效果
2012/03/26 Javascript
js给页面加style无效果的解决方法
2014/01/20 Javascript
jquery制作多功能轮播图插件
2015/04/02 Javascript
BootStrap实用代码片段之一
2016/03/22 Javascript
JS中页面与页面之间超链接跳转中文乱码问题的解决办法
2016/12/15 Javascript
Bootstrap禁用响应式布局的实现方法
2017/03/09 Javascript
原生js实现简单的Ripple按钮实例代码
2017/03/24 Javascript
解决在Bootstrap模糊框中使用WebUploader的问题
2018/03/22 Javascript
微信小程序wx:for循环的实例详解
2018/10/07 Javascript
超好用的jQuery分页插件jpaginate用法示例【附源码下载】
2018/12/06 jQuery
koa2+vue实现登陆及登录状态判断
2019/08/15 Javascript
JavaScript实现简易聊天对话框(加滚动条)
2020/02/10 Javascript
vue实例的选项总结
2020/06/09 Javascript
node koa2 ssr项目搭建的方法步骤
2020/12/11 Javascript
Python程序设计入门(1)基本语法简介
2014/06/13 Python
Python中用pycurl监控http响应时间脚本分享
2015/02/02 Python
利用Python的Flask框架来构建一个简单的数字商品支付解决方案
2015/03/31 Python
最基础的Python的socket编程入门教程
2015/04/23 Python
Python面向对象进阶学习
2019/05/21 Python
使用celery执行Django串行异步任务的方法步骤
2019/06/06 Python
python处理“
2019/06/10 Python
win10安装tensorflow-gpu1.8.0详细完整步骤
2020/01/20 Python
基于python实现坦克大战游戏
2020/10/27 Python
css3个性化字体_动力节点Java学院整理
2017/07/12 HTML / CSS
CSS 说明横向进度条最后显示文字的实现代码
2020/11/10 HTML / CSS
英国日常交易网站:Wowcher
2018/09/04 全球购物
商务日语专业毕业生自荐信
2014/03/27 职场文书
优质服务口号
2014/06/11 职场文书
党员观看《筑梦中国》心得体会
2016/01/18 职场文书
vue3如何优雅的实现移动端登录注册模块
2021/03/29 Vue.js
Python机器学习应用之工业蒸汽数据分析篇详解
2022/01/18 Python
教你如何用cmd快速登录服务器
2022/06/10 Servers