xml数据天生过于繁芜

xml数据解析过于繁芜

2、关于json先容

php转js对象ajax 应用json传输数据 CSS

工具是属性的无序凑集

在js中, 可以利用{}仿照这个凑集

语法:

var json={属性:属性值,属性:属性值}

把稳:属性可加可不加引号(包括单引号和双引号)

3、用json个表示详细的信息

(1)表示一个人的信息

var person = {name:'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>