您的位置:首页 > 编程语言 > PHP开发

PHP与Ajax

2016-01-12 20:02 531 查看
如何用PHP接收JSON格式数据

1.一般来说,我们直接用$_POST $_REQUEST $_GET这样的超全局变量接收就好了

<?php
$obj_temp=$_POST['data'];
echo $obj_temp['name'];
?>


2.但是有时候我们希望转换下格式,比如说数组,这个时候我们就要用到json_decode()方法

先来模拟下前端向PHP发送Request的环境

$(document).ready(function(){
var jsonText ='{"user":[{"username":"xx","password":"123"}, {"username":"yy","password":"456"}]}';
$("#testLink").click(function(){
$.post('test.php',{data:jsonText},function(data){
alert(data);
});
});
});


然后我们用test.php来接收这个请求,并且把请求的data解析出来

<?php
$arr = json_decode($_POST['data'],true);
print_r($arr);
?>


json_decode可以将json字符串转化为数组,这样我们就可以逐条读取数据了,解析出来的数组是这样的

Array (
[user] => Array (
[0] => Array (
[username] => xx
[password] => 123
)
[1] => Array (
[username] => yy
[password] => 456
)
)
)


如何用PHP返回JSON格式数据

下面这句话必不可少。

header('Content-type: text/json');


总的来说,我们一般是在PHP中创建数组,然后用json_encode()方法把数组转化成json格式

<?php
header('Content-type: text/json');
$fruits = array (
"fruits"  => array("a" => "orange", "b" => "banana", "c" => "apple"),
"numbers" => array(1, 2, 3, 4, 5, 6),
"holes"   => array("first", 5 => "second", "third")
);
echo json_encode($fruits);
?>


需要注意的是,需要先把数组中的汉字内容进行编码转换,将GBK的编码转换为UTF-8,否则json_code()会将汉字转为NULL。(从utf-8数据库中取出的值不需要进行转化)

形式可参见如下代码

<?php
while($row = $db->fetch_array($query)){
$row['uname'] = mb_convert_encoding($row['uname'],'utf-8','gbk');
$row['content'] = mb_convert_encoding($row['content'],'utf-8','gbk');
$com[] = $row;
}
echo json_encode($com);
?>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: