XML的代替者----JSON


Posted in Javascript onJuly 21, 2007

我个人觉得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来表达: 

<?xml version="1.0"?> 
<root> 
  <book> 
    <name>Ju love</name> 
    <price>$15</price> 
  </book> 
  <book> 
    <name>Javascrip</name> 
    <price>$25</price> 
  </book> 
</root>

如果用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格式错误,也只会弹出一个提示框,而不会抛出一个脚本错误!

Javascript 相关文章推荐
jquery win 7透明弹出层效果的简单代码
Aug 06 Javascript
javascript进行数组追加方法小结
Jun 16 Javascript
Jquery中CSS选择器用法分析
Feb 10 Javascript
HTML5之WebSocket入门3 -通信模型socket.io
Aug 21 Javascript
angularjs中ng-bind-html的用法总结
May 23 Javascript
Angular项目从新建、打包到nginx部署全过程记录
Dec 09 Javascript
解决js ajax同步请求造成浏览器假死的问题
Jan 18 Javascript
ES6学习笔记之map、set与数组、对象的对比
Mar 01 Javascript
jQuery AJAX 方法success()后台传来的4种数据详解
Aug 08 jQuery
Vue.js如何使用Socket.IO的示例代码
Sep 05 Javascript
Node.js API详解之 dgram模块用法实例分析
Jun 05 Javascript
vue+vuex+axios从后台获取数据存入vuex,组件之间共享数据操作
Jul 31 Javascript
js右键菜单效果代码
Jul 21 #Javascript
$()JS小技巧
Jul 21 #Javascript
IE 缓存策略的BUG的解决方法
Jul 21 #Javascript
用JS实现的一个include函数
Jul 21 #Javascript
代码精简的可以实现元素圆角的js函数
Jul 21 #Javascript
发布BlueShow v1.0 图片浏览器(类似lightbox)blueshow.js 打包下载
Jul 21 #Javascript
用javascript实现读取txt文档的脚本
Jul 20 #Javascript
You might like
PHP中使用gettext来支持多语言的方法
2011/05/02 PHP
php判断类是否存在函数class_exists用法分析
2014/11/14 PHP
详解ThinkPHP3.2.3验证码显示、刷新、校验
2016/12/29 PHP
iframe里的页面禁止右键事件的方法
2014/06/10 Javascript
EasyUI实现二级页面的内容勾选的方法
2015/03/01 Javascript
jquery实现模拟百分比进度条渐变效果代码
2015/10/29 Javascript
javascript鼠标右键菜单自定义效果
2020/12/08 Javascript
jQuery获取radio选中项的值实例
2016/06/18 Javascript
jQuery实现的网格线绘制方法
2016/06/20 Javascript
js实现交通灯效果
2017/01/13 Javascript
微信小程序之事件交互操作实例分析
2018/12/03 Javascript
详解微信小程序实现跑马灯效果(附完整代码)
2019/04/29 Javascript
详解微信小程序的不同函数调用的几种方法
2019/05/08 Javascript
vue实现路由切换改变title功能
2019/05/28 Javascript
vue中使用带隐藏文本信息的图片、图片水印的方法
2020/04/24 Javascript
vue-cli脚手架的.babelrc文件用法说明
2020/09/11 Javascript
[05:31]DOTA2英雄梦之声_第04期_光之守卫
2014/06/23 DOTA
python实现马耳可夫链算法实例分析
2015/05/20 Python
python 计算数据偏差和峰度的方法
2019/06/29 Python
浅谈pymysql查询语句中带有in时传递参数的问题
2020/06/05 Python
Python类成员继承重写的实现
2020/09/16 Python
Python colormap库的安装和使用详情
2020/10/06 Python
python设置中文界面实例方法
2020/10/27 Python
Numpy数组的广播机制的实现
2020/11/03 Python
纽约现代艺术博物馆商店:MoMA STORE(室内家具和杂货商品)
2016/08/02 全球购物
英国领先的葡萄酒专家:Majestic Wine
2017/05/30 全球购物
怎么写好自荐信
2013/10/30 职场文书
测控技术与仪器个人求职信范文
2013/12/30 职场文书
母亲追悼会答谢词
2014/01/27 职场文书
团日活动总结范文
2014/04/25 职场文书
软件项目开发计划书
2014/05/01 职场文书
安全生产大检查方案
2014/05/07 职场文书
大学应届毕业生求职信
2014/05/24 职场文书
作风转变年心得体会
2014/10/22 职场文书
烛光里的微笑观后感
2015/06/17 职场文书
2019年共青团工作条例最新版
2019/11/12 职场文书