xml数据天生过于繁芜
xml数据解析过于繁芜
2、关于json先容
工具是属性的无序凑集
在js中, 可以利用{}仿照这个凑集
语法:
var json={属性:属性值,属性:属性值}
把稳:属性可加可不加引号(包括单引号和双引号)
3、用json个表示详细的信息
(1)表示一个人的信息
var person = {name:39;zhangsan',age:30};alert(person.name+person.age); //显示张三30
(2)表示多个人的信息
var data=[{ name:'zhangsan', age:30 },{ name:'lisi', age:18 },{ name:'wangwu', age:25 }];for(var i=0;i<data.length;i++){ document.write(data[i].name+data[i].age); document.write('<hr>');}
4、在php中如何利用json
json_encode(); //json编码
json_decode(); //json解码
mixed json_decode ( string $json [, bool $assoc = false] )
json 待解码的 json string 格式的字符串。
assoc 当该参数为 TRUE 时,将返回 array 而非 object 。
默认返回一个工具
$obj=json_decode($str);
加上参数true表示数组
$arr=json_decode($str,true);
天生json字符串
json表示大量数据, 在php中表示多个、大量的数据可以数组、工具来表示
也便是说, 在php, 如果想天生json字符串, 必须从数组、工具上天生。
复合数据类型:数组、工具
从数组中天生json字符串
$row=array('name'=>'lisi','age'=>30);echo json_encode($row);
从工具中天生json字符串
class Person{ public $name='zhangsan'; public $age=20;}$p1=new Person();$str=json_encode($p1);
关于json保存中文的问题
目前, json只支持utf-8, 如果想保存中文, 必须进行转码
$arr=array('name'=>'张三','age'=>30);$arr['name']=iconv('gb2312','utf-8',$arr['name']);echo json_encode($arr);
5、在javascript中json语法:
var str=xmlHttp.responseText;var json=eval("("+ str +")"); 返回是json工具var json=eval(str); 返回是json数组工具
理解:eval()函数可以将php中的json字符串转换为javascript可实行的json工具(包括数组工具)
6、案例:
php代码:
$row:一维数组 天生一个json格式的字符串
$data:二维数组 天生一个json数组格式的字符串
<?php$row=array('username'=>'lisi','password'=>'222222');echo json_encode($row); 输出:{"username":"lisi","password":"222222"}/$data=array(array('name'=>'zhangsan','age'=>18),array('name'=>'lisi','age'=>30));echo json_encode($data);//输出:[{"name":"zhangsan","age":18},{"name":"lisi","age":30}]/?>
HTML代码:
<script language="javascript" src="public.js"></script><script>var xhr=createxhr();xhr.open('post','demo05.php');xhr.setRequestHeader('Content-type','application/x-www-form-urlencoded');xhr.onreadystatechange=function(){ if(xhr.readyState==4 && xhr.status==200){ var value=xhr.responseText; //返回的是字符串 //(1) var json=eval('('+value+')'); //返回是json工具 alert(json.username+json.password); //(2) //var json=eval(value); //返回是json数组工具 //alert(json[0].name+json[0].age); } };xhr.send(null);</script>
理解:
var json=eval('('+value+')'); 紧张是针春联系关系数组
返回:"{name:'zhangsan',age:18}"
访问办法:json.username+json.password
var json=eval(value); 紧张是针对索引数组
返回:"[{name:'zhangsan',age:18},{name:'lisi',age:20}]"
访问办法:json[0].name+json[0].age
把稳:索引数组的解析也可以采取 var json=eval(value);
查询数据表中所有数据并天生json字符串返回
php代码:
<?php//查询goods表中所有数据并返回$sql="select name,price from goods order by id desc";mysql_connect('localhost','root','111111');mysql_select_db('shop');mysql_query('set names gb2312');$result=mysql_query($sql); //发送sql语句$num=mysql_num_rows($result); //总行数$data=array();for($i=0;$i<$num;$i++){$row=mysql_fetch_assoc($result);$row['name']=iconv('gb2312','utf-8',$row['name']);$data[]=$row;}mysql_close();echo json_encode($data);
PHP代码:
<style>tr{background-color:#ffffff;height:30px;font-size:12px;}</style><script language="javascript" src='public.js'></script><script>window.onload=function(){var xhr=createxhr();xhr.open('post','demo04.php');xhr.setRequestHeader('Content-type','application/x-www-form-urlencoded');xhr.onreadystatechange=function(){ if(xhr.readyState==4 && xhr.status==200) var value=xhr.responseText; var data=eval(value); for(var i=0;i<data.length;i++){ //创建行元素 var tr=document.createElement('tr'); //创建序号td元素 var tdID=document.createElement('td'); tdID.innerHTML=i+1; //创建名称td元素 var tdName=document.createElement('td'); tdName.innerHTML=data[i].name; //创建价格td元素 var tdPrice=document.createElement('td'); tdPrice.innerHTML=data[i].price; //将三个td追加到tr元素 tr.appendChild(tdID); tr.appendChild(tdName); tr.appendChild(tdPrice); document.getElementsByTagName('TBODY')[0].appendChild(tr); } }; xhr.send(null);}</script><table id='tbData' width="800" cellspacing="1" cellpadding="4" bgcolor="#336699"><tr><td>序号</td><td>商品名称</td><td>商品价格</td></tr></table>