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 相关文章推荐
ThinkPHP中I(),U(),$this-&gt;post()等函数用法
Nov 22 PHP
php+mysqli使用面向对象方式更新数据库实例
Jan 29 PHP
php强制更新图片缓存的方法
Feb 11 PHP
php跨服务器访问方法小结
May 12 PHP
PHP中的常见魔术方法功能作用及用法实例
Jul 01 PHP
PHP会话处理的10个函数
Aug 11 PHP
修改PHP脚本使WordPress拦截垃圾评论的方法示例
Dec 10 PHP
php实现微信公众号主动推送消息
Dec 31 PHP
php等比例缩放图片及剪切图片代码分享
Feb 13 PHP
谈谈php对接芝麻信用踩的坑
Dec 01 PHP
PHP切割整数工具类似微信红包金额分配的思路详解
Sep 18 PHP
PHP下载文件函数与用法示例
Sep 27 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
phpmyadmin中禁止外网使用的方法
2014/11/04 PHP
PHP7 参数处理机制修改
2021/03/09 PHP
Javascript 判断 object 的特定类转载
2007/02/01 Javascript
jQuery隔行变色与普通JS写法的对比
2013/04/21 Javascript
jQuery弹性滑动导航菜单实现思路及代码
2013/05/02 Javascript
轻松创建nodejs服务器(7):阻塞操作的实现
2014/12/18 NodeJs
js使用心得分享
2015/01/13 Javascript
D3.js中data(), enter() 和 exit()的问题详解
2015/08/17 Javascript
jQuery实现商品活动倒计时
2015/10/16 Javascript
jQuery调用WebMethod(PageMethod) NET2.0的方法
2016/04/15 Javascript
JS中使用apply、bind实现为函数或者类传入动态个数的参数
2016/04/26 Javascript
javascript表单控件实例讲解
2016/09/13 Javascript
jQuery ajax MD5实现用户注册即时验证功能
2016/10/11 Javascript
js实现各种复制到剪贴板的方法(分享)
2016/10/27 Javascript
js数组去重的hash方法
2016/12/22 Javascript
解决微信内置浏览器返回上一页强制刷新问题方法
2017/02/05 Javascript
js实现上下左右弹框划出效果
2017/03/08 Javascript
webpack实现一个行内样式px转vw的loader示例
2018/09/13 Javascript
bootstrap实现嵌套模态框的实例代码
2020/01/10 Javascript
vue实现div单选多选功能
2020/07/16 Javascript
vue项目实现设置根据路由高亮对应的菜单项操作
2020/08/06 Javascript
[01:56]无止竞 再出发——中国军团出征2017年DOTA2国际邀请赛
2017/07/05 DOTA
[03:12]完美世界DOTA2联赛PWL DAY9集锦
2020/11/10 DOTA
python 性能提升的几种方法
2016/07/15 Python
使用Python自动化破解自定义字体混淆信息的方法实例
2019/02/13 Python
python高斯分布概率密度函数的使用详解
2019/07/10 Python
关于pytorch多GPU训练实例与性能对比分析
2019/08/19 Python
浅谈tensorflow 中tf.concat()的使用
2020/02/07 Python
前后端结合实现amazeUI分页效果
2020/08/21 HTML / CSS
html5使用window.postMessage进行跨域实现数据交互的一次实战
2021/02/24 HTML / CSS
沙特阿拉伯网上购物:Sayidaty Mall
2018/05/06 全球购物
人力资源部经理助理岗位职责
2014/03/04 职场文书
2014年国庆节演讲稿
2014/09/02 职场文书
我的兄弟姐妹观后感
2015/06/15 职场文书
门球健将观后感
2015/06/16 职场文书
2015中秋祝酒词
2015/08/12 职场文书