php和ajax 数据传递总结

随着ajax技术运用越来越频繁,个人对该技术有了一定的经验。

该篇文章主要总结一下关于php和ajax之间的数据传递问题,其他的不做探讨,个人浅见。

目前php和ajax数据的传递主要是通过 JSON 来进行的。

首先,我们要说明一下php后台和前台ajax的数据只能通过字符串的数据类型来传递(据我理解,不对欢迎拍砖)。那为什么又要JSON呢 ?

实际上JSON 只是提供一种数据的内部的格式规范,该格式类似于JS的对象,所以js很好处理JSON格式。再次声明JSON不是数据类型,而是一种格式!

比方说:TXT文档是一种文件数据类型,但是里面的内容格式是什么样的呢? 这里说的字符串就是数据类型,JSON就是一种数据格式,二者并不冲突。

然后,我们来看数据传递:

A . ajax 向 后台php传递数据

$.ajax({
url:***,
type:"post",
data:jdata,
success:.....
})
上述代码中的 jdata 变量,应该是一个JSON 格式的字符串,即使他不是字符串,在浏览器数据传输时,也会被转化为字符串,那么php该如何处理它呢?

例如: jdata={name:"jack"};  

那么php后台 就可以通过 $_POST['name'] 来获取“jack”这个字符串。

这是最简单的情况,实际情况要比这复杂的多!


1. 对象中包含对象,如何处理? 

假如: 

var obj={age:11,sex:0};

jdata={name:"jack",arr:obj};

首先在前端必须进行处理,浏览器只能自行处理一级的对象,将其转化为字符串,出现了二级对象,浏览器可能

无法正常转换。利用浏览器中JSON对象的方法stringify, 将obj转换为json格式的字符串。

obj = JSON.stringify(obj);

输出为:

{“age”:11,"sex":0} 

那么php又该怎么处理 $_POST['arr']呢 ? 

是的,用 json_decode($_POST['arr'])将  $_POST['arr'] 转变为php对象,

如果想转化为php数组呢 ?

 用 json_decode($_POST['arr'],true)将自动转化为关联数组。


2. 如果需要传递的数据 jdata是一个数组,怎么传递?

jdata['name']="jack";

jdata["age"]=11;

此时最好将jdata转换为对象,在进行传递。




B. php向前端ajax 传递数据

在php端:一般php向前端ajax传递数据,都会使用json_encode将变量序列化为JSON格式的字符串。

例如:

$a=array("1","2","3");

$a=json_encode($a);

在前端ajax:

而 ajax收到该数据,并不能直接使用,而要首先使用 JSON.parse(data),将它反序列化为 JS 对象,然后才可以在直接在js中使用的对象。

例如:

var str = '{"name":"huangxiaojian","age":"23"}'

结果:

JSON.parse(str)

Object
  1. age"23"
  2. name"huangxiaojian"
  3. __proto__Object


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值