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 静态页面中显示动态内容
Aug 14 PHP
php下批量挂马和批量清马代码
Feb 27 PHP
PHP+MYSQL会员系统的开发实例教程
Aug 23 PHP
PHP中构造函数和析构函数解析
Oct 10 PHP
PHP获取数组长度或某个值出现次数的方法
Feb 11 PHP
PHP 反射(Reflection)使用实例
May 12 PHP
深入浅析php中sprintf与printf函数的用法及区别
Jan 08 PHP
基于Codeigniter框架实现的student信息系统站点动态发布功能详解
Mar 23 PHP
详细解读php的命名空间(一)
Feb 21 PHP
PHP操作Postgresql封装类与应用完整实例
Apr 24 PHP
在Laravel中使用DataTables插件的方法
May 29 PHP
php微信公众号开发之欢迎老朋友
Oct 20 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下使用CURL方式POST数据至API接口的代码
2013/02/14 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十五)
2014/06/30 PHP
PHP错误Warning:mysql_query()解决方法
2015/10/24 PHP
jquery 获取自定义属性(attr和prop)的实现代码
2012/06/27 Javascript
Jquery读取URL参数小例子
2013/08/30 Javascript
Asp.Net alert弹出提示信息的几种方法总结
2014/01/29 Javascript
JavaScript 异常处理 详解
2015/02/06 Javascript
Bootstrap实现圆角、圆形头像和响应式图片
2016/12/14 Javascript
jQuery图片切换动画效果
2017/02/28 Javascript
Vue实现购物车功能
2017/04/27 Javascript
js HTML5 canvas绘制图片的方法
2017/09/08 Javascript
vuex的使用及持久化state的方式详解
2018/01/23 Javascript
浅谈webpack打包生成的bundle.js文件过大的问题
2018/02/22 Javascript
spirngmvc js传递复杂json参数到controller的实例
2018/03/29 Javascript
Next.js实现react服务器端渲染的方法示例
2019/01/06 Javascript
使用vue-cli3新建一个项目并写好基本配置(推荐)
2019/04/24 Javascript
一次让你了解全部JavaScript的作用域
2019/06/24 Javascript
微信小程序 如何获取网络状态
2019/07/26 Javascript
深入学习Vue nextTick的用法及原理
2019/10/08 Javascript
jQuery实现轮播图效果
2019/11/26 jQuery
Vue.js 实现地址管理页面思路详解(地址添加、编辑、删除和设置默认地址)
2019/12/11 Javascript
使用JS location实现搜索框历史记录功能
2019/12/23 Javascript
Vue 自适应高度表格的实现方法
2020/05/13 Javascript
Python实现类似jQuery使用中的链式调用的示例
2016/06/16 Python
Python中pow()和math.pow()函数用法示例
2018/02/11 Python
Django 浅谈根据配置生成SQL语句的问题
2018/05/29 Python
Python描述符descriptor使用原理解析
2020/03/21 Python
法国足球商店:Footcenter
2019/07/06 全球购物
意大利网上书店:LaFeltrinelli
2020/06/12 全球购物
岗位职责范本
2013/11/23 职场文书
八年级数学教学反思
2014/01/31 职场文书
《尊严》教学反思
2014/02/11 职场文书
机关副主任个人四风问题整改措施
2014/09/26 职场文书
2014年政务公开工作总结
2014/12/09 职场文书
JS Canvas接口和动画效果大全
2021/04/29 Javascript
世界十大评分最高的动漫,CLANNAD上榜,第八赚足人们眼泪
2022/03/18 日漫