Ajax 如何通过url 传递Json 数据或者数组 给PHP进行处理

/**
  * @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() 方法
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值