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 printf输出格式使用说明
Dec 05 PHP
linux下使用crontab实现定时PHP计划任务失败的原因分析
Jul 05 PHP
WIN8.1下搭建PHP5.6环境
Apr 29 PHP
PHP中的traits简单使用实例
May 13 PHP
Symfony2学习笔记之模板用法详解
Mar 17 PHP
php使用pear_smtp发送邮件
Apr 15 PHP
PHP实现获取并生成数据库字典的方法
May 04 PHP
php中通过eval实现字符串格式的计算公式
Mar 18 PHP
php数据库的增删改查 php与javascript之间的交互
Aug 31 PHP
thinkphp中U方法按路由规则生成url的方法
Mar 12 PHP
php7新特性的理解和比较总结
Apr 14 PHP
php多进程并发编程防止出现僵尸进程的方法分析
Feb 28 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下统计用户在线时间的一种尝试
2010/08/26 PHP
php生成excel文件的简单方法
2014/02/08 PHP
php 使用GD库为页面增加水印示例代码
2014/03/24 PHP
PHP实现采集中国天气网未来7天天气
2014/10/15 PHP
php绘制一条直线的方法
2015/01/24 PHP
利用phpexcel对数据库数据的导入excel(excel筛选)、导出excel
2017/04/27 PHP
javascript 控制 html元素 显示/隐藏实现代码
2009/09/01 Javascript
jquery.ui.progressbar 中文文档
2009/11/26 Javascript
真正的JQuery.ajax传递中文参数的解决方法
2011/05/28 Javascript
JS中的构造函数详细解析
2014/03/10 Javascript
JS实现动态修改table及合并单元格的方法示例
2017/02/20 Javascript
Angularjs中使用指令绑定点击事件的方法
2017/03/30 Javascript
JavaScript箭头(arrow)函数详解
2017/06/04 Javascript
详解Angular 自定义结构指令
2017/06/21 Javascript
微信小程序的分类页面制作
2017/06/27 Javascript
微信小程序实现倒计时调用相机自动拍照功能
2018/06/10 Javascript
element-ui upload组件多文件上传的示例代码
2018/10/17 Javascript
浅谈webpack构建工具配置和常用插件总结
2020/05/11 Javascript
iview实现图片上传功能
2020/06/29 Javascript
Python实现的数据结构与算法之快速排序详解
2015/04/22 Python
python try except 捕获所有异常的实例
2018/10/18 Python
Python中flatten( )函数及函数用法详解
2018/11/02 Python
python3 自动识别usb连接状态,即对usb重连的判断方法
2019/07/03 Python
python解析多层json操作示例
2019/12/30 Python
python实现简易版学生成绩管理系统
2020/06/22 Python
Python基于callable函数检测对象是否可被调用
2020/10/16 Python
萨克斯第五大道英国:Saks Fifth Avenue英国
2019/04/01 全球购物
解释一下钝化(Swap out)
2016/12/26 面试题
教育技术学专业职业规划书
2014/03/03 职场文书
六五普法规划实施方案
2014/03/21 职场文书
北京英文导游词
2015/02/12 职场文书
2015年银行个人工作总结
2015/05/14 职场文书
敬业奉献模范事迹材料(2016精选版)
2016/02/26 职场文书
中国古代史学名著《战国策》概述
2019/08/09 职场文书
go语言map与string的相互转换的实现
2021/04/07 Golang
vue @ ~ 相对路径 路径别名设置方式
2022/06/05 Vue.js