XML的代替者----JSON
XML的代替者----JSON
发布时间:2016-12-30 来源:查字典编辑
摘要:我个人觉得PHP与Javascript各有长处,如果能完美的结合起来,那将创造出许许多多的奇迹!我是初次写此类文章,Bug难免,请各位指正~...

我个人觉得PHP与Javascript各有长处,如果能完美的结合起来,那将创造出许许多多的奇迹!我是初次写此类文章,Bug难免,请各位指正~

现在AJAX应用非常流行,而在AJAX中客户端Javascript和服务端动态脚本的通信是关键。如果传输的信息比较简单,通常我们会直接采用字符串的方式,如果信息结构复杂一点,则通常用XML文档。XML文档虽然应用广泛,但是用php生成和用Javascript处理却不是一件很容易的事情。这里我推荐一种XML文档的比较好简化替代方案:JSON!

首先我们来了解一下Javascript的基础知识。

1.创建数组,可以用JS内建的类Array来初始化,也可以用JSON符号"[]"。下面通过两种方式创建的arr1和arr2的实质是一样的:

vararr1=newArray();

arr1[0]="apple";

arr1[1]="google";

arr1[2]="longbill";

vararr2=["apple","google","longbill"];

注意,数组的索引也可以是字符串,如arr1["name"]="longbill";这时的数组就相当于对象了。。。

2.创建对象,可以用JS内建的类Object来初始化,也可以用JSON符号"{}"。下面通过两种方式创建的obj1和ob2的实质也是一样的:

varobj1=newObject();

obj1.name="longbill";

obj1.age=18;

varobj2={name:"longbill",age:18};

注意,这里"{"和"}"之间必须写成"键:值"的形式,而且不同的"键:值"之间要用","分割。"键"中也可以包含空格等特殊字符,此时要用""(引号)来引用,如"phonenumber":123456

其实在JS中,数组的本质是一个对象,对象本身也是一个数组。所以,obj1.name和obj1["name"]是同一个引用。

我们还可以通过JSON符号的嵌套来定义复杂的S对象:

varpeople=[

{

name:"longbill",

age:18

},

{

name:"neal",

age:19

},

{

name:"glocklee",

age:17

}

];

//这个应该看的懂吧~~

大部分XML文档都可以用JSON来表达:

<?xmlversion="1.0"?>

<root>

<book>

<name>Julove</name>

<price>$15</price>

</book>

<book>

<name>Javascrip</name>

<price>$25</price>

</book>

</root>

如果用JSON就可以表达为:

{

root:

[

{

name:"Julove",

price:"$15"

},

{

name:"Javascript",

price:"$25"

}

]}

是不是简化很多?

而且客户端JS处理起来也很简单,只要用执行字符串函数"eval"就可以将JSON信息提取出来,而如果是XML文档,那就不的不用大量的标准DOM操作来提取其中的数据。如:

//已经用AJAX从服务端下载了一个JSON文件(字符串),保存在变量json里

eval("varmyvar="+json);

//这样,JSON里的信息就表达在myvar这个变量里了。

缺点:一旦JSON的格式错误,将导致服务端JS系统错误,甚至崩溃。

解决办法:

最好在eval之前使用try(试探执行),如

//已经用AJAX从服务端下载了一个JSON文件(字符串),保存在变量json里

try{

eval("varmyvar="+json);

}catch(e){alert('jsonsyntaxerror!');}

//这样,即使JSON格式错误,也只会弹出一个提示框,而不会抛出一个脚本错误!

推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
相关阅读
网友关注
最新Javascript教程学习
热门Javascript教程学习
编程开发子分类