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计算页面执行时间的实现代码
Jun 18 PHP
Codeigniter上传图片出现“You did not select a file to upload”错误解决办法
Jun 12 PHP
getJSON跨域SyntaxError问题分析
Aug 07 PHP
Php连接及读取和写入mysql数据库的常用代码
Aug 11 PHP
php定时执行任务设置详解
Feb 06 PHP
php实现图片局部打马赛克的方法
Feb 11 PHP
PHP对象、模式与实践之高级特性分析
Dec 08 PHP
PHP获取当前日期及本周一是几月几号的方法
Mar 28 PHP
php简单随机字符串生成方法示例
Apr 19 PHP
php mysql数据库操作类(实例讲解)
Aug 06 PHP
解决php extension 加载顺序问题
Aug 16 PHP
laravel 解决crontab不执行的问题
Oct 22 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 读取文件的正确方法
2009/04/29 PHP
PHP编程过程中需要了解的this,self,parent的区别
2009/12/30 PHP
php将数据库中所有内容生成静态html文档的代码
2010/04/12 PHP
Linux下PHP连接Oracle数据库
2014/08/20 PHP
PHP使用MPDF类生成PDF的方法
2015/12/08 PHP
PHP基于ICU扩展intl快速实现汉字转拼音及按拼音首字母分组排序的方法
2017/05/03 PHP
PHP设计模式之工厂模式定义与用法详解
2018/04/03 PHP
PHPUnit测试私有属性和方法功能示例
2018/06/12 PHP
PHP使用 Imagick 扩展实现图片合成,圆角处理功能示例
2019/09/09 PHP
javascript:void(0)的真正含义实例分析
2008/08/20 Javascript
jquery监控数据是否变化(修正版)
2011/04/12 Javascript
IE6-IE9不支持table.innerHTML的解决方法分享
2012/09/14 Javascript
js自定义事件及事件交互原理概述(一)
2013/02/01 Javascript
JS 实现获取打开一个界面中输入的值
2013/03/19 Javascript
获取表单控件原始(初始)值的方法
2013/08/21 Javascript
jquery实现滑动图片自己测试的例子
2013/11/05 Javascript
Js保留小数点的4种效果实现代码分享
2014/04/12 Javascript
setinterval()与clearInterval()JS函数的调用方法
2015/01/21 Javascript
Nodejs Express4.x开发框架随手笔记
2015/11/23 NodeJs
Knockoutjs 学习系列(一)ko初体验
2016/06/07 Javascript
微信小程序图表插件(wx-charts)实例代码
2017/01/17 Javascript
如何把vuejs打包出来的文件整合到springboot里
2018/07/26 Javascript
jQuery-ui插件sortable实现自由拖动排序
2018/12/01 jQuery
JavaScript实现图片伪异步上传过程解析
2020/04/10 Javascript
小程序瀑布流组件实现翻页与图片懒加载
2020/05/19 Javascript
对于Python的框架中一些会话程序的管理
2015/04/20 Python
利用pandas向一个csv文件追加写入数据的实现示例
2020/04/23 Python
纯CSS3实现鼠标滑过按钮动画第二节
2020/07/16 HTML / CSS
5分钟弄清楚html5的drag and drop(小结)
2019/04/10 HTML / CSS
Java基础知识面试题
2014/03/25 面试题
高一自我鉴定
2013/12/17 职场文书
前台文员岗位职责
2013/12/28 职场文书
财产保全担保书范文
2014/04/01 职场文书
热爱祖国的演讲稿
2014/05/04 职场文书
视光学专业自荐信
2014/06/24 职场文书
交心谈心活动总结
2015/05/11 职场文书