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 相关文章推荐
javascript 一个函数对同一元素的多个事件响应
Jul 25 Javascript
让IE8浏览器支持function.bind()方法
Oct 16 Javascript
jQuery插件zoom实现图片全屏放大弹出层特效
Apr 15 Javascript
js实现页面跳转的五种方法推荐
Mar 10 Javascript
jQuery Select下拉框操作小结(推荐)
Jul 22 Javascript
JS简单实现无缝滚动效果实例
Aug 24 Javascript
详解利用 Express 托管静态文件的方法
Sep 18 Javascript
常用的 JS 排序算法 整理版
Apr 05 Javascript
angularjs实现对表单输入改变的监控(ng-change和watch两种方式)
Aug 29 Javascript
JS拖拽排序插件Sortable.js用法实例分析
Feb 20 Javascript
解决Vue watch里调用方法的坑
Nov 07 Javascript
Vue 修改网站图标的方法
Dec 31 Vue.js
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中魔术变量__METHOD__与__FUNCTION__的区别
2014/09/29 PHP
php实现图片等比例缩放代码
2015/07/23 PHP
php5.2的curl-bug 服务器被php进程卡死问题排查
2016/09/19 PHP
PHP简单实现正则匹配省市区的方法
2018/04/13 PHP
硬盘浏览程序,保存成网页格式便可使用
2006/12/03 Javascript
举例讲解JavaScript中关于对象操作的相关知识
2015/11/16 Javascript
jQuery grep()方法详解及实例代码
2016/10/30 Javascript
使用node.js对音视频文件加密的实例代码
2017/08/30 Javascript
jquery实现商品sku多属性选择功能(商品详情页)
2019/12/20 jQuery
Vue-cli打包后部署到子目录下的路径问题说明
2020/09/02 Javascript
基于openlayers实现角度测量功能
2020/09/28 Javascript
js+h5 canvas实现图片验证码
2020/10/11 Javascript
解决VantUI popup 弹窗不弹出或无蒙层的问题
2020/11/03 Javascript
[01:31]完美与DOTA2历程
2014/07/31 DOTA
[01:59]翻天覆地,因你而变,7.20版本地图更新速览
2018/11/24 DOTA
Python图片裁剪实例代码(如头像裁剪)
2017/06/21 Python
python爬虫实战之最简单的网页爬虫教程
2017/08/13 Python
python 统计数组中元素出现次数并进行排序的实例
2018/07/02 Python
Python根据欧拉角求旋转矩阵的实例
2019/01/28 Python
Python 最强编辑器详细使用指南(PyCharm )
2019/09/16 Python
Tensorflow Summary用法学习笔记
2020/01/10 Python
python+selenium+chromedriver实现爬虫示例代码
2020/04/10 Python
Python pip安装模块提示错误解决方案
2020/05/22 Python
详解Python之Scrapy爬虫教程NBA球员数据存放到Mysql数据库
2021/01/24 Python
AmazeUi Tree(树形结构) 应用小结
2020/08/17 HTML / CSS
澳大利亚足球鞋和服装购物网站:Ultra Football
2018/10/11 全球购物
请写出一段Python代码实现删除一个list里面的重复元素
2015/12/29 面试题
给水排水工程专业毕业生推荐信
2013/10/28 职场文书
工厂厂长岗位职责
2013/11/08 职场文书
售后服务承诺书
2014/03/26 职场文书
环境保护与污染治理求职信
2014/07/16 职场文书
乡镇三严三实学习心得体会
2014/10/13 职场文书
2015年小学生国庆节演讲稿
2015/07/30 职场文书
三严三实·严以律己心得体会
2016/01/13 职场文书
python 爬取京东指定商品评论并进行情感分析
2021/05/27 Python
pandas提升计算效率的一些方法汇总
2021/05/30 Python