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实现的获取URL信息的类
Jan 02 PHP
php的curl实现get和post的代码
Aug 23 PHP
PHP通过header实现文本文件下载的代码
Aug 08 PHP
PHP 修复未正常关闭的HTML标签实现代码(支持嵌套和就近闭合)
Jun 07 PHP
php向js函数传参的几种方法
Aug 10 PHP
通过php修改xml文档内容的方法
Jan 23 PHP
PHP判断浏览器、判断语言代码分享
Mar 05 PHP
又十个超级有用的PHP代码片段
Sep 24 PHP
PHP数据库操作Helper类完整实例
May 11 PHP
PHP-FPM的配置与优化讲解
Mar 15 PHP
php生成微信红包数组的方法
Sep 05 PHP
laravel 创建命令行命令的图文教程
Oct 23 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访问MYSQL数据库封装类(附函数说明)
2010/12/04 PHP
介绍一些PHP判断变量的函数
2012/04/24 PHP
PHP-redis中文文档介绍
2013/02/07 PHP
jquery实现心算练习代码
2010/12/06 Javascript
js 完美图片新闻轮转效果,腾讯大粤网首页图片轮转改造而来
2011/11/21 Javascript
JS对象与JSON格式数据相互转换
2012/02/20 Javascript
JS 实现BASE64_ENCODE和BASE64_DECODE(实例代码)
2013/11/13 Javascript
在Iframe中获取父窗口中表单的值(示例代码)
2013/11/22 Javascript
JS表的模拟方法
2015/02/05 Javascript
JavaScript 定时器 SetTimeout之定时刷新窗口和关闭窗口(代码超简单)
2016/02/26 Javascript
基于RequireJS和JQuery的模块化编程日常问题解析
2016/04/14 Javascript
JavaScript实现左右下拉框动态增删示例
2017/03/09 Javascript
React组件之间的通信的实例代码
2017/06/27 Javascript
基于JS实现带动画效果的流程进度条
2018/06/01 Javascript
vue2.0 下拉框默认标题设置方法
2018/08/22 Javascript
详解适配器在JavaScript中的体现
2018/09/28 Javascript
npm scripts 使用指南详解
2018/10/08 Javascript
构建大型 Vue.js 项目的10条建议(小结)
2019/11/14 Javascript
jQuery实现全选、反选和不选功能的方法详解
2019/12/04 jQuery
基于JS实现计算24点算法代码实例解析
2020/07/23 Javascript
Python网络编程之TCP套接字简单用法示例
2018/04/09 Python
解决pycharm安装后代码区不能编辑的问题
2018/10/28 Python
对python多线程中互斥锁Threading.Lock的简单应用详解
2019/01/11 Python
全面解析CSS Media媒体查询使用操作(推荐)
2017/08/15 HTML / CSS
Lacoste(法国鳄鱼)加拿大官网:以标志性的POLO衫而闻名
2019/05/15 全球购物
俄罗斯设计师家具购物网站:The Furnish
2019/12/01 全球购物
会计专业自我评价
2014/02/12 职场文书
房产继承公证书
2014/04/09 职场文书
电视节目策划方案
2014/05/16 职场文书
效能监察建议书
2014/05/19 职场文书
主要负责人任命书
2014/06/06 职场文书
大学计划书范文800字
2014/08/14 职场文书
年会邀请函范文
2015/01/30 职场文书
2015年学校远程教育工作总结
2015/07/20 职场文书
浅谈CSS不规则边框的生成方案
2021/05/25 HTML / CSS
Redis 的查询很快的原因解析及Redis 如何保证查询的高效
2022/03/16 Redis