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的配置文件php.ini
Oct 09 PHP
php内嵌函数用法实例
Mar 20 PHP
php语言的7种基本的排序方法
Dec 28 PHP
thinkphp3.2.3版本的数据库增删改查实现代码
Sep 22 PHP
使用正则去除php代码中的注释方法
Nov 03 PHP
php基于dom实现读取图书xml格式数据的方法
Feb 03 PHP
PHP处理Ajax请求与Ajax跨域问题
Feb 13 PHP
phpcms实现验证码替换及phpcms实现全站搜索功能教程详解
Dec 13 PHP
thinkphp5 URL和路由的功能详解与实例
Dec 26 PHP
PHP命名空间与自动加载类详解
Sep 04 PHP
PHP使用pdo实现事务处理操作示例
Sep 05 PHP
PHP封装XML和JSON格式数据接口操作示例
Mar 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技术开发技巧分享
2010/03/23 PHP
thinkphp框架下实现登录、注册、找回密码功能
2016/04/06 PHP
浅谈php中curl、fsockopen的应用
2016/12/10 PHP
PHP策略模式定义与用法示例
2017/07/27 PHP
laravel5.6 框架邮件队列database驱动简单demo示例
2020/01/26 PHP
跨域表单提交状态的变相判断代码
2009/11/12 Javascript
Javascript Throttle &amp; Debounce应用介绍
2013/03/19 Javascript
Jquery实现图片放大镜效果的思路及代码(自写)
2013/10/18 Javascript
JavaScript中Number.NEGATIVE_INFINITY值的使用详解
2015/06/05 Javascript
JS使用正则表达式除去字符串中重复字符的方法
2015/11/05 Javascript
Bootstrap实现响应式导航栏效果
2015/12/28 Javascript
AngularJS中table表格基本操作示例
2017/10/10 Javascript
js生成word中图片处理方法
2018/01/06 Javascript
vue中添加mp3音频文件的方法
2018/03/02 Javascript
js+css实现打字效果
2020/06/24 Javascript
JavaScript数组去重算法实例小结
2018/05/07 Javascript
详解滑动穿透(锁body)终极探索
2019/04/16 Javascript
微信小程序按钮点击跳转页面详解
2019/05/06 Javascript
vue+webpack dev本地调试全局样式引用失效的解决方案
2019/11/12 Javascript
vue跳转方式(打开新页面)及传参操作示例
2020/01/26 Javascript
Javascript地址引用代码实例解析
2020/02/25 Javascript
Python多线程、异步+多进程爬虫实现代码
2016/02/17 Python
python中list列表的高级函数
2016/05/17 Python
在Django同1个页面中的多表单处理详解
2017/01/25 Python
pycharm远程linux开发和调试代码的方法
2018/07/17 Python
Python中使用双下划线防止类属性被覆盖问题
2019/06/27 Python
Python Request爬取seo.chinaz.com百度权重网站的查询结果过程解析
2019/08/13 Python
Python帮你识破双11的套路
2019/11/11 Python
Python参数传递实现过程及原理详解
2020/05/14 Python
Django+Uwsgi+Nginx如何实现生产环境部署
2020/07/31 Python
Python绘制数码晶体管日期
2021/02/19 Python
公司JAVA开发面试题
2015/04/02 面试题
社区母亲节活动方案
2014/03/05 职场文书
2015年教学副校长工作总结
2015/07/22 职场文书
小学一年级班主任工作经验交流材料
2015/11/02 职场文书
Java获取字符串编码格式实现思路
2022/09/23 Java/Android