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 相关文章推荐
HTML IMG标签 onload 内存溢出导致浏览器CPU占用过高
Mar 09 Javascript
经典的带阴影的可拖动的浮动层
Jun 26 Javascript
Javascript-Mozilla和IE中的一个函数直接量的问题分析
Aug 12 Javascript
jquery实现div拖拽宽度示例代码
Jul 31 Javascript
Javascript基础教程之数据类型 (数值 Number)
Jan 18 Javascript
JavaScript中的this关键字使用方法总结
Mar 13 Javascript
jquery实现先淡出再折叠收起的动画效果
Aug 07 Javascript
JS基于MSClass和setInterval实现ajax定时采集信息并滚动显示的方法
Apr 18 Javascript
KnockoutJS 3.X API 第四章之表单textInput、hasFocus、checked绑定
Oct 11 Javascript
为什么JavaScript中0.1 + 0.2 != 0.3
Dec 03 Javascript
vue-calendar-component 封装多日期选择组件的实例代码
Dec 04 Vue.js
关于Javascript闭包与应用的详解
Apr 22 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 UTF-8、Unicode和BOM问题
2010/05/18 PHP
PHP Cookei记录用户历史浏览信息的代码
2016/02/03 PHP
PHP ADODB实现事务处理功能示例
2018/05/25 PHP
Prototype1.6 JS 官方下载地址
2007/11/30 Javascript
语义化 H1 标签
2008/01/14 Javascript
flexigrid 类似ext grid的JS表格代码
2010/07/17 Javascript
JavaScript call apply使用 JavaScript对象的方法绑定到DOM事件后this指向问题
2011/09/28 Javascript
JavaScript window.document的属性、方法和事件小结
2012/10/24 Javascript
Js动态添加复选框Checkbox的实例方法
2013/04/08 Javascript
浅析Javascript使用include/require
2013/11/13 Javascript
使用js实现数据格式化
2014/12/03 Javascript
在for循环中length值是否需要缓存
2015/07/27 Javascript
JavaScript html5 canvas绘制时钟效果(二)
2016/03/27 Javascript
Html中 IFrame的用法及注意点
2016/12/22 Javascript
jquery.validate.js 多个相同name的处理方式
2017/07/10 jQuery
详解vue-cli与webpack结合如何处理静态资源
2017/09/19 Javascript
JavaScript代码执行的先后顺序问题
2017/10/29 Javascript
Vue中对拿到的数据进行A-Z排序的实例
2018/09/25 Javascript
详解Vue项目中实现锚点定位
2019/04/24 Javascript
使用layui的layer组件做弹出层的例子
2019/09/27 Javascript
关于JS模块化的知识点分享
2019/10/16 Javascript
在vue中配置不同的代理同时访问不同的后台操作
2020/09/11 Javascript
[01:50]WODOTA制作 DOTA2中文宣传片《HERO》
2013/04/28 DOTA
python采用requests库模拟登录和抓取数据的简单示例
2014/07/05 Python
python实现多线程抓取知乎用户
2016/12/12 Python
Python上下文管理器用法及实例解析
2019/11/11 Python
国际领先的学术出版商:Springer
2017/01/11 全球购物
Ibatis的核心配置文件都有什么
2014/09/08 面试题
机械个人求职信范文
2014/01/24 职场文书
小学教师培训感言
2014/02/11 职场文书
优秀求职信
2014/05/29 职场文书
室内趣味活动方案
2014/08/24 职场文书
幼儿园感恩节活动方案
2014/10/06 职场文书
导游词之临安白水涧
2019/11/05 职场文书
详解overflow:hidden的作用(溢出隐藏、清除浮动、解决外边距塌陷)
2021/07/01 HTML / CSS
微前端qiankun改造日渐庞大的项目教程
2022/06/21 Javascript