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 相关文章推荐
让iframe子窗体取父窗体地址栏参数(querystring)
Oct 13 Javascript
利用jquery写的左右轮播图特效
Feb 12 Javascript
学习JavaScript设计模式(链式调用)
Nov 26 Javascript
基于Jquery插件实现跨域异步上传文件功能
Apr 26 Javascript
基于javascript实现最简单的选项卡切换效果
May 16 Javascript
JS禁止查看网页源代码的实现方法
Oct 12 Javascript
JS中BOM相关知识点总结(必看篇)
Nov 22 Javascript
node中koa中间件机制详解
Aug 22 Javascript
基于 Vue 实现一个酷炫的 menu插件
Nov 14 Javascript
Javacript中自定义的map.js  的方法
Nov 26 Javascript
js中的数组对象排序分析
Dec 11 Javascript
vue-router之实现导航切换过渡动画效果
Oct 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函数
2006/10/09 PHP
用PHP的ob_start() 控制您的浏览器cache
2009/08/03 PHP
php判断字符串在另一个字符串位置的方法
2014/02/27 PHP
php准确获取文件MIME类型的方法
2015/06/17 PHP
修复ShopNC使用QQ 互联时提示100010 错误
2015/11/08 PHP
详解Yii2 定制表单输入字段的标签和样式
2017/01/04 PHP
PHP封装请求类实例分析【基于Yii框架】
2019/10/17 PHP
php 实现简单的登录功能示例【基于thinkPHP框架】
2019/12/02 PHP
js输入框邮箱自动提示功能代码实现
2013/12/10 Javascript
js delete 用法(删除对象属性及变量)
2014/08/24 Javascript
最精简的JavaScript实现鼠标拖动效果的方法
2015/05/11 Javascript
你有必要知道的25个JavaScript面试题
2015/12/29 Javascript
Bootstrap中点击按钮后变灰并显示加载中实例代码
2016/09/23 Javascript
js print打印网页指定区域内容的简单实例
2016/11/01 Javascript
React-Native实现ListView组件之上拉刷新实例(iOS和Android通用)
2017/07/11 Javascript
webpack构建vue项目的详细教程(配置篇)
2017/07/17 Javascript
jQuery实现标签子元素的添加和赋值方法
2018/02/24 jQuery
vue内置指令详解
2018/04/03 Javascript
Vue.js 实现地址管理页面思路详解(地址添加、编辑、删除和设置默认地址)
2019/12/11 Javascript
[38:21]2014 DOTA2国际邀请赛中国区预选赛5.21 TongFu VS LGD-CDEC
2014/05/22 DOTA
对tensorflow 的模型保存和调用实例讲解
2018/07/28 Python
python traceback捕获并打印异常的方法
2018/08/31 Python
Python中的CSV文件使用&quot;with&quot;语句的方式详解
2018/10/16 Python
用python实现名片管理系统
2020/06/18 Python
台湾饭店和机票预订网站:Expedia台湾
2016/08/05 全球购物
美国著名童装品牌:OshKosh B’gosh
2016/08/05 全球购物
ProForm英国站点:健身房和健身器材网上商店
2019/06/05 全球购物
企业诚信承诺书
2014/05/23 职场文书
应聘护士求职信
2014/07/21 职场文书
活动总结格式
2014/08/30 职场文书
幼儿园教师师德师风演讲稿:我自豪我是一名幼师
2014/09/10 职场文书
万里长城导游词
2015/01/30 职场文书
2015年小学教导处工作总结
2015/05/26 职场文书
2016年学校综治宣传月活动总结
2016/03/16 职场文书
七年级作文之《我和我的祖国》观后感作文
2019/10/18 职场文书
Java数组与堆栈相关知识总结
2021/06/29 Java/Android