Ajax 如何通过url 传递Json 数据或者数组 给PHP进行处理
2013-12-23 16:00
3147 查看
/** * @author kaizhu_Qin * @copyright http://blog.csdn.net/kaizhu_qin * @version 2013-12-23 * @latest update 2013-12-23 */
首先,我们应该明白,url是不能直接传递数组类型的数据的。
例如:我们想通过url传递一个包含了用户名和密码的数据给login.php进行出来
var a=new Array(); a['name']="admin"; a['password']="admin"; var data='userinfo='+a; $.ajax({ type:"POST", url:"login.php", data:data, success:function(data){ console.log(data); } });
这样通过url传数组是不成功的。
目前,JSON已经成为最流行的数据交换格式之一,我们可以尝试通过JSON
来完成:
下面我们先来了解下JSON:
从5.2版本开始,PHP原生提供json_encode()和json_decode()函数,前者用于编码,后者用于解码。
一、json_encode()
该函数主要用来将数组和对象,转换为json格式。先看一个数组转换的例子:
$arr = array ('a'=>1,'b'=>2,'c'=>3,'d'=>4,'e'=>5); echo json_encode($arr); //结果为: //{"a":1,"b":2,"c":3,"d":4,"e":5}
二、json_decode()
该函数用于将json文本转换为相应的PHP数据结构。下面是一个例子:
$json = '{"a":1,"b":2,"c":3,"d":4,"e":5}; var_dump(json_decode($json));
结果就是生成一个PHP对象:
object(stdClass)#1 (5) {
["a"] => int(1)
["b"] => int(2)
["c"] => int(3)
["d"] => int(4)
["e"] => int(5)
}
如果想要强制生成PHP关联数组,json_decode()需要加一个参数true:
$json = '{"a":1,"b":2,"c":3,"d":4,"e":5}'; var_dump(json_decode($json,true));
结果就生成了一个关联数组:
array(5) {
["a"] => int(1)
["b"] => int(2)
["c"] => int(3)
["d"] => int(4)
["e"] => int(5)
}
/***************************************************华丽的分割线****************************************************************/
同样的道理,我们反过来应用下:
我们在js里将需要传递的数组进行处理,写为下面的形式:
需要传递的数组:
var a = new Array(); a['name']="333"; a['password']="54dfdgf"; //JSON数据形式: var a='{"username":admin,"password":admin}'; var data='userinfo='+a; $.ajax({ type:"POST", url:"login.php", data:data, success:function(data){ console.log(data); } });
在login.php 文件:
$json=_POST['userinfo']; print_r((json_decode($json,true))); //结果:Array ([username] => admin [password] => admin)
这样我们使用Ajax通过url传递的数组就可以在php获得了。
当然,如果我们使用ajax的方式,传递form表单的数据,serialize() 能更加快速地序列化表单值。
serialize() 方法通过序列化表单值,创建 URL 编码文本字符串。
关于serialize() 的具体用法,大家可以参考这里:《jQuery
ajax - serialize() 方法》
相关文章推荐
- 如何在前台脚本通过json传递数据到后台(使用微软自带的ajax)
- php和js如何通过json互相传递数据(转)
- 如何在前台脚本通过json传递数据到后台(使用微软自带的ajax)
- 通过AJAX与Servlet进行交互:通过JSON传递数据
- php和js如何通过json互相传递数据
- winfrom如何通过http来进行通信,并且通过传递json格式的数据可接受json格式的数据
- 转 winfrom如何通过http来进行通信,并且通过传递json格式的数据可接受json格式的数据
- PHP文件数据传输用jQuery-ajax进行浏览器->服务器->数据文件->服务器->浏览器的数据传输($_POST,$_GET,json_encode(数组数据回应),json数据解析)
- 如何在前台脚本通过json传递数据到后台(使用微软自带的ajax)
- HTML文件、PHP文件、JSON文件之间通过AJAX编程简单传递数据
- 使用Ajax传递 json数据,并在一般处理页面进行接收全过程
- php和js如何通过json互相传递数据相关问题探讨
- php和js如何通过json互相传递数据相关问题探讨
- php和js如何通过json互相传递数据(转)
- 如何在前台脚本通过json传递数据到后台(使用微软自带的ajax)
- JS数据处理[对json数据的一些简单处理转为数组或者键值对]
- php学习笔记(三十)ajax请求和接收参数的实现方式(包括json数据格式的简单处理)
- jQuery通过Ajax向PHP服务端发送请求并返回JSON数据
- 如何通过ajax 传递list对象 传递到后台action 处理
- php基于jquery的ajax技术传递json数据简单实例