AJAX(四)–JSON信息的处理
JavaScript Object Notation(js对象符号)字面量对象的数据,是一种数据交换格式。一些网站的接口提供的数据是JSON类型的,加快获取数据速度。
1.PHP制作json信息
- json_encode()
- 数组的方式
<?php
//生产json
//最好是关联数组,索引数组只能输出数组类型的信息
$weather = array('city'=>'beijing','wind'=>'north','temp'=>'29');
$jn_wea = json_encode($weather);
echo $jn_wea;
//混合数组也可以,但属性名变为索引值
$weather2 = array('beijing','wind'=>'north','temp'=>'29');
$jn_wea2 = json_encode($weather2);
echo $jn_wea2;
//效果如下
2. 对象的方式
class Person
{
public $name = 'Peter';
public function eat()
{
echo '吃';
}
}
$person = new Person();
$jn_person = json_encode($person);
echo $jn_person;
//对象只将属性转换,方法不转换,效果如下
- 注意:json数据类型在PHP中相当于普通的字符串
2.PHP接收json信息,并处理。
- json_decode
两个参数:
json信息
布尔值 true—返回数组
false—返回对象
<?php
$weather = array('city'=>'beijing','wind'=>'north','temp'=>'29');
$jn_wea = json_encode($weather);
$fan_wea = json_decode($jn_wea,true);
var_dump($fan_wea);
- json字符串最好是单引号定义的。
3.javascript对json信息的处理
- 客户端代码
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>Document</title>
<script>
var xhr = new XMLHttpRequest();
xhr.onreadystatechange=function ()
{
if(xhr.readyState==4)
{
//因为接收的json是字符串,所以用responseText接收
//eval 函数允许 JScript 源代码的动态执行,即将字符串当作js代码执行,这样使info变成了字面量对象
eval("var info = "+xhr.responseText);
console.log(info.city);
console.log(info.wind);
console.log(info.temp);
}
};
xhr.open('get','./js_json.php');
xhr.send(null);
</script>
</head>
<body>
</body>
</html>
- 服务器端代码
<?php
$weather = array('city'=>'beijing','wind'=>'north','temp'=>'29');
$jn_wea = json_encode($weather);
echo $jn_wea;
- 注意:eval函数会将其中的字符串当作js源码执行,这样使返回的字符串变成了对象,可以进行调用。