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伪静态之APACHE篇
Jun 02 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(一)
Jun 23 PHP
laravel 4安装及入门图文教程
Oct 29 PHP
PHP采用get获取url汉字出现乱码的解决方法
Nov 13 PHP
使用PHP实现下载CSS文件中的图片
Dec 06 PHP
PHP7正式版测试,性能惊艳!
Dec 08 PHP
PHP微信开发用Cache 解决数据缓存
Jul 11 PHP
php 微信开发获取用户信息如何实现
Dec 13 PHP
php生成0~1随机小数的方法(必看)
Apr 05 PHP
Laravel5.7框架安装与使用学习笔记图文详解
Apr 02 PHP
Laravel5.3+框架定义API路径取消CSRF保护方法详解
Apr 06 PHP
Apache+PHP+MySQL搭建PHP开发环境图文教程
Aug 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和XSL stylesheets转换XML文档
2006/10/09 PHP
深入PHP数据缓存的使用说明
2013/05/10 PHP
ThinkPHP3.1新特性之对页面压缩输出的支持
2014/06/19 PHP
php提示Warning:mysql_fetch_array() expects的解决方法
2014/12/16 PHP
php实现多维数组中每个单元值(数字)翻倍的方法
2015/02/16 PHP
JavaScript语句可以不以;结尾的烦恼
2007/03/08 Javascript
javascript 遍历验证所有文本框的值
2009/08/27 Javascript
jQuery实现表头固定效果的实例代码
2013/05/24 Javascript
JSONP获取Twitter和Facebook文章数的具体步骤
2014/02/24 Javascript
jquery判断checkbox是否选中及改变checkbox状态的实现方法
2016/05/26 Javascript
AngularJS 简单应用实例
2016/07/28 Javascript
基于jQuery和Bootstrap框架实现仿知乎前端动态列表效果
2016/11/09 Javascript
浅谈AngularJS中使用$resource(已更新)
2017/09/14 Javascript
js与jQuery实现获取table中的数据并拼成json字符串操作示例
2018/07/12 jQuery
JavaScript事件冒泡与事件捕获实例分析
2018/08/01 Javascript
基于JS实现web端录音与播放功能
2019/04/17 Javascript
Node使用Nodemailer发送邮件的方法实现
2020/02/24 Javascript
vue实现把接口单独存放在一个文件方式
2020/08/13 Javascript
Python中一些自然语言工具的使用的入门教程
2015/04/13 Python
python使用urlparse分析网址中域名的方法
2015/04/15 Python
Python正则表达式经典入门教程
2017/05/22 Python
python脚本当作Linux中的服务启动实现方法
2019/06/28 Python
python 的 scapy库,实现网卡收发包的例子
2019/07/23 Python
将matplotlib绘图嵌入pyqt的方法示例
2020/01/08 Python
Python面向对象编程基础实例分析
2020/01/17 Python
jupyter note 实现将数据保存为word
2020/04/14 Python
Html5 video标签视频的最佳实践
2020/02/26 HTML / CSS
奥地利汽车配件店:Pkwteile.at
2017/03/10 全球购物
大学生实习思想汇报
2014/01/12 职场文书
创先争优承诺书范文
2014/03/31 职场文书
毕业设计说明书
2014/05/07 职场文书
竞聘上岗演讲稿
2014/05/16 职场文书
班组拓展活动方案
2014/08/14 职场文书
三方股东合作协议书范本
2014/09/28 职场文书
中学教代会开幕词
2016/03/04 职场文书
PyTorch 实现L2正则化以及Dropout的操作
2021/05/27 Python