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的树控件实现代码(asp.net+json)
Jul 11 Javascript
js jquery获取随机生成id的服务器控件的三种方法
Jul 11 Javascript
Node.js与PHP、Python的字符处理性能对比
Jul 06 Javascript
JS+CSS实现简易实用的滑动门菜单效果
Sep 18 Javascript
JavaScript通过改变文字透明度实现的文字闪烁效果实例
Apr 27 Javascript
JavaScript表单即时验证 验证不成功不能提交
Aug 31 Javascript
vue按需加载组件webpack require.ensure的方法
Dec 13 Javascript
Javascript中parseInt的正确使用方式
Oct 17 Javascript
javascript中call,apply,callee,caller用法实例分析
Jul 24 Javascript
Vue解析带html标签的字符串为dom的实例
Nov 13 Javascript
JS实现音乐钢琴特效
Jan 06 Javascript
vue结合el-upload实现腾讯云视频上传功能
Jul 01 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
NOD32 v2.70.32 简体中文封装版 提供下载了
2007/02/27 PHP
PHP用星号隐藏部份用户名、身份证、IP、手机号等实例
2014/04/08 PHP
PHP PDO fetch 模式各种参数的输出结果一览
2015/01/07 PHP
php实现俄罗斯乘法实例
2015/03/07 PHP
1亿条数据如何分表100张到Mysql数据库中(PHP)
2015/07/29 PHP
使用PHP similar text计算两个字符串相似度
2015/11/06 PHP
PHP的Laravel框架结合MySQL与Redis数据库的使用部署
2016/03/21 PHP
ThinkPHP和UCenter接口冲突的解决方法
2016/07/25 PHP
ECMAScript 基础知识
2007/06/29 Javascript
js png图片(有含有透明)在IE6中为什么不透明了
2010/02/07 Javascript
用JS判断IE版本的代码 超管用!
2011/08/09 Javascript
jQuery动态添加删除select项(实现代码)
2013/09/03 Javascript
jquery查找tr td 示例模拟
2014/05/08 Javascript
NodeJS学习笔记之Connect中间件应用实例
2015/01/27 NodeJs
jQuery中animate用法实例分析
2015/03/09 Javascript
纯javascript移动优先的幻灯片效果
2015/11/02 Javascript
如何防止JavaScript自动插入分号
2015/11/05 Javascript
jQuery+pjax简单示例汇总
2017/04/21 jQuery
关于微信公众号开发无法支付的问题解决
2018/12/28 Javascript
javascript实现简单搜索功能
2020/03/26 Javascript
vue中的过滤器及其时间格式化问题
2020/04/09 Javascript
微信小程序组件生命周期的踩坑记录
2021/03/03 Javascript
[53:03]Optic vs TNC 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
Python中的random()方法的使用介绍
2015/05/15 Python
用Python写一个自动木马程序
2019/09/17 Python
美国最大的农村生活方式零售店:Tractor Supply Company(TSC)
2017/05/15 全球购物
澳大利亚电商Catch新西兰站:Catch.co.nz
2020/05/30 全球购物
客户代表自我评价范例
2013/09/24 职场文书
工程资料员岗位职责
2014/03/10 职场文书
物理学专业求职信
2014/07/04 职场文书
考试作弊被抓检讨书
2014/10/02 职场文书
幼儿园大班毕业评语
2014/12/31 职场文书
2015年度合同管理工作总结
2015/05/22 职场文书
2016年“6.26”禁毒宣传月系列活动总结
2016/04/05 职场文书
Python字符串对齐方法使用(ljust()、rjust()和center())
2021/04/26 Python
Android学习之BottomSheetDialog组件的使用
2022/06/21 Java/Android