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 相关文章推荐
Ext javascript建立超链接,进行事件处理的实现方法
Mar 22 Javascript
用cssText批量修改样式
Aug 29 Javascript
jQuery学习笔记(2)--用jquery实现各种模态提示框代码及项目构架
Apr 08 Javascript
在JavaScript中实现类的方式探讨
Aug 28 Javascript
完美兼容各大浏览器的jQuery插件实现图片切换特效
Dec 12 Javascript
Node.js项目中调用JavaScript的EJS模板库的方法
Mar 11 Javascript
JS实现字符串转驼峰格式的方法
Dec 16 Javascript
解决AngualrJS页面刷新导致异常显示问题
Apr 20 Javascript
详解如何在vue中使用sass
Jun 21 Javascript
Vue 2.5 Level E 发布了: 新功能特性一览
Oct 24 Javascript
vue实现商城上货组件简易版
Nov 27 Javascript
React native ListView 增加顶部下拉刷新和底下点击刷新示例
Apr 27 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
mysql5写入和读出乱码解决
2006/11/25 PHP
用PHP进行MySQL删除记录操作代码
2008/06/07 PHP
解决PhpMyAdmin中导入2M以上大文件限制的方法分享
2014/06/06 PHP
PHP exif扩展方法开启详解
2014/07/28 PHP
ExtJS 2.2.1的grid控件在ie6中的显示问题
2009/05/04 Javascript
javascript parseInt与Number函数的区别
2010/01/21 Javascript
js 对小数加法精度处理示例说明
2013/12/27 Javascript
js动态创建上传表单通过iframe模拟Ajax实现无刷新
2014/02/20 Javascript
window.location不跳转的问题解决方法
2014/04/17 Javascript
JS、CSS以及img对DOMContentLoaded事件的影响
2014/08/12 Javascript
jQuery中hasClass()方法用法实例
2015/01/06 Javascript
js实现选中复选框文字变色的方法
2015/08/14 Javascript
直接拿来用的15个jQuery代码片段
2015/09/23 Javascript
JavaScript面试题大全(推荐)
2016/09/22 Javascript
jquery+css3问卷答题卡翻页动画效果示例
2016/10/26 Javascript
使用JS正则表达式 替换括号,尖括号等
2016/11/29 Javascript
浅谈Node.js之异步流控制
2017/10/25 Javascript
微信小程序promsie.all和promise顺序执行
2017/10/27 Javascript
ES6 系列之 Generator 的自动执行的方法示例
2018/10/19 Javascript
Python数据分析之双色球基于线性回归算法预测下期中奖结果示例
2018/02/08 Python
500行Python代码打造刷脸考勤系统
2019/06/03 Python
如何基于Python实现数字类型转换
2020/02/07 Python
python实现mask矩阵示例(根据列表所给元素)
2020/07/30 Python
浅谈html5之sse服务器发送事件EventSource介绍
2017/08/28 HTML / CSS
HTML5逐步分析实现拖放功能的方法
2020/09/30 HTML / CSS
优质飞蝇钓和渔具:RiverBum
2020/05/10 全球购物
计算机大学生职业生涯规划书范文
2014/02/19 职场文书
外贸专业求职信
2014/03/09 职场文书
小学毕业演讲稿
2014/04/25 职场文书
中学生学雷锋演讲稿
2014/04/26 职场文书
运动会稿件100字
2014/09/24 职场文书
工资收入证明
2014/10/07 职场文书
庐山导游词
2015/02/03 职场文书
认真学习保证书
2015/02/26 职场文书
详解MySQL的Seconds_Behind_Master
2021/05/18 MySQL
Go微服务项目配置文件的定义和读取示例详解
2022/06/21 Golang