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 相关文章推荐
js opener的使用详解
Jan 11 Javascript
使用angular写一个hello world
Jan 23 Javascript
javascript如何创建对象
Aug 29 Javascript
微信小程序之ES6与事项助手的功能实现
Nov 30 Javascript
bootstrap vue.js实现tab效果
Feb 07 Javascript
Bootstrap表单使用方法详解
Feb 17 Javascript
JavaScript基本语法_动力节点Java学院整理
Jun 26 Javascript
使用OPENLAYERS3实现点选的方法
Sep 24 Javascript
webpack配置sass模块的加载的方法
Jul 30 Javascript
vue中各选项及钩子函数执行顺序详解
Aug 25 Javascript
JavaScript简单编程实例学习
Feb 14 Javascript
浅析JS中NEW的实现原理及重写
Feb 20 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
通过ICQ网关发送手机短信的PHP源程序
2006/10/09 PHP
php中禁止单个IP与ip段访问的代码小结
2012/07/04 PHP
基于PHP导出Excel的小经验 完美解决乱码问题
2013/06/10 PHP
php使用Jpgraph绘制复杂X-Y坐标图的方法
2015/06/10 PHP
给PHP开发者的编程指南 第一部分降低复杂程度
2016/01/18 PHP
php file_get_contents取文件中数组元素的方法
2017/04/01 PHP
PHP正则匹配到2个字符串之间的内容方法
2018/12/24 PHP
php求斐波那契数的两种实现方式【递归与递推】
2019/09/09 PHP
JQuery选择器特辑 详细小结
2012/05/14 Javascript
基于jquery的9行js轻松实现tab控件示例
2013/10/12 Javascript
面向切面编程(AOP)的理解
2015/05/01 Javascript
JavaScript实现LI列表数据绑定的方法
2015/08/04 Javascript
延时加载JavaScript代码提高速度
2015/12/27 Javascript
jQuery实现鼠标跟随提示层效果代码(可显示文本,Div,Table,Html等)
2016/04/18 Javascript
深入浅析Bootstrap列表组组件
2016/05/03 Javascript
深入解析jQuery中Deferred的deferred.promise()方法
2016/05/03 Javascript
js 原型对象和原型链理解
2017/02/09 Javascript
微信小程序本地缓存数据增删改查实例详解
2017/05/24 Javascript
微信小程序 自定义Toast实例代码
2017/06/12 Javascript
vue路由导航守卫和请求拦截以及基于node的token认证的方法
2019/04/07 Javascript
tsconfig.json配置详解
2019/05/17 Javascript
vue用BMap百度地图实现即时搜索功能
2019/09/26 Javascript
jQuery操作元素的内容和样式完整实例分析
2020/01/10 jQuery
js实现盒子拖拽动画效果
2020/08/09 Javascript
jQuery插件实现图片轮播效果
2020/10/19 jQuery
[02:41]DOTA2英雄基础教程 谜团
2013/12/10 DOTA
python基础教程之popen函数操作其它程序的输入和输出示例
2014/02/10 Python
python操作gmail实例
2015/01/14 Python
Python中生成器和yield语句的用法详解
2015/04/17 Python
使用python实现knn算法
2017/12/20 Python
Python cookbook(数据结构与算法)筛选及提取序列中元素的方法
2018/03/19 Python
化工专业个人的求职信范文
2013/11/28 职场文书
单位委托书
2014/10/15 职场文书
民主评议党员自我鉴定
2014/10/21 职场文书
解析mybatis-plus中的resultMap简单使用
2021/11/23 Java/Android
Python实现抖音热搜定时爬取功能
2022/03/16 Python