我个人觉得php与javascript各有长处,如果能完美的结合起来,那将创造出许许多多的奇迹! 我是初次写此类文章,bug难免,请各位指正~
现在ajax应用非常流行,而在ajax中客户端javascript和服务端动态脚本的通信是关键。如果传输的信息比较简单,通常我们会直接采用字符串的方式,如果信息结构复杂一点,则通常用xml文档。xml文档虽然应用广泛,但是用php生成和用javascript处理却不是一件很容易的事情。这里我推荐一种xml文档的比较好简化替代方案:json!
首先我们来了解一下javascript的基础知识。
1.创建数组,可以用js内建的类array来初始化,也可以用json符号[]。下面通过两种方式创建的arr1和arr2的实质是一样的:
var arr1 = new array();
arr1[0] = apple;
arr1[1] = google;
arr1[2] = longbill;
var arr2 = [apple,google,longbill];
注意,数组的索引也可以是字符串,如 arr1[name] = longbill; 这时的数组就相当于对象了。。。
2.创建对象,可以用js内建的类object来初始化,也可以用json符号{}。下面通过两种方式创建的obj1和ob2的实质也是一样的:
var obj1 = new object();
obj1.name = longbill;
obj1.age = 18;
var obj2 = { name:longbill,age:18 };
注意,这里{和}之间必须写成键:值的形式,而且不同的键:值之间要用,分割。 键中也可以包含空格等特殊字符,此时要用(引号)来引用,如 phone number:123456
其实在js中,数组的本质是一个对象,对象本身也是一个数组。所以, obj1.name 和 obj1[name] 是同一个引用。
我们还可以通过json符号的嵌套来定义复杂的s对象:
var people = [
{
name:longbill,
age:18
},
{
name:neal,
age:19
},
{
name:glocklee,
age:17
}
];
//这个应该看的懂吧~~
大部分xml文档都可以用json来表达:
ju love
$15
javascrip
$25
如果用json就可以表达为:
{
root:
[
{
name:ju love,
price:$15
},
{
name:javascript,
price:$25
}
]}
是不是简化很多?
而且客户端js处理起来也很简单,只要用执行字符串函数 eval 就可以将json信息提取出来,而如果是xml文档,那就不的不用大量的标准dom操作来提取其中的数据。如:
//已经用ajax从服务端下载了一个json文件(字符串),保存在变量 json 里
eval(var myvar = +json);
//这样,json里的信息就表达在myvar这个变量里了。
缺点:一旦json的格式错误,将导致服务端js系统错误,甚至崩溃。
解决办法:
最好在eval之前使用try(试探执行),如
//已经用ajax从服务端下载了一个json文件(字符串),保存在变量 json 里
try {
eval(var myvar = +json);
} catch(e) { alert('json syntax error!'); }
//这样,即使json格式错误,也只会弹出一个提示框,而不会抛出一个脚本错误!