转载链接,在呼吁和响应中运用

By admin in 4858美高梅 on 2019年8月10日

  近日学习Ajax,临时开掘IBM的developerWorks上的多少个雨后春笋文章《通晓Ajax》拾叁分科学,不唯有讲授了Ajax原理,还对关于Web的XML、服务器相应、DOM管理等规律做了很详细的汇报。相信假如静下心来看完他,对您的文化的集合是有非常大扶持。

Ajax 客户机/服务器通信可以很巧妙

掌握 Ajax,第 10 部分: 使用 JSON 进行数据传输

以原生方式操作 JavaScript 对象

Ajax 无疑是最流行的新 Web 技巧,这一独立的法子能够将鲁钝的 Web
分界面转化成交互性的 Ajax 应用程序。它应用客户端脚本与 Web
服务器调换数据,所以,不必选用会搁浅相互的总体页面刷新,就可以动态地创新Web 页面。使用 Ajax,能够创造特别助长、尤其动态的 Web
应用程序用户分界面,其即时性与可用性以至能够临近本机桌面应用程序。

  如今该体系小说已经到第11章,内容相当多,也因为IBM
developerWorks已经宣示未有授权无法转发,由此唯有贴上超链接。对js、XML、DOM有个别掌握的话,能够越来越快的明白内容。

4858美高梅 1

文档选项

<tr valign="top"><td width="8"><img alt="" height="1" width="8" src="//www.ibm.com/i/c.gif"/></td><td width="16"><img alt="" width="16" height="16" src="//www.ibm.com/i/c.gif"/></td><td class="small" width="122"><p><span class="ast">未显示需要 JavaScript 的文档选项</span></p></td></tr>

将此页作为电子邮件发送

Ajax 由 HTML、JavaScript、DHTML 和 DOM 组成。本体系的小编 Brett
McLaughlin
是壹个人 Ajax 专家,他身体力行了那个技艺怎么协同专门的职业 —— 从完整概述到细节的商议—— 使高效的 Web 开荒成为现实。


4858美高梅 2

级别: 初级

 

 

文档选项

Brett McLaughlin (brett@newInstance.com), 小说家兼编辑, O’Reilly Media
Inc.

名目好多小说

  1. 左右 Ajax,第 1 部分: Ajax 入门简单介绍
  2. 垄断 Ajax,第 2 有的: 使用 JavaScript 和 Ajax 发出异步诉求
  3. 调节 Ajax,第 3 部分: Ajax 中的高档供给和响应
  4. 掌握 Ajax,第 4 部分: 利用 DOM 进行 Web 响应
  5. 掌握 Ajax,第 5 部分: 操纵 DOM
  6. 通晓 Ajax,第 6 部分: 创设基于 DOM 的 Web 应用程序
  7. 垄断(monopoly) Ajax,第 7 部分: 在乞求和响应中应用 XML
  8. 调控 Ajax,第 8 部分: 在呼吁和响应中运用 XML
  9. 掌握 Ajax,第 9 部分: 使用 Google Ajax Search API
  10. 驾驭 Ajax,第 10 部分: 使用 JSON 进行多少传输
  11. 支配 Ajax,第 11 部分: 服务器端的 JSON

4858美高梅 3

2007 年 4 月 09 日

 

Ajax》十二分没有错,不仅仅解说了Ajax原理,还对有关Web的XML、服务器相应、DOM处…

4858美高梅 4

在异步应用程序中发送和接受新闻时,能够选择以纯文本和 XML
作为数据格式。精晓 Ajax 的这一期切磋另一种有效的数量格式 JavaScript
Object
Notation(JSON),以及怎么着选取它更自在地在应用程序中活动数据和指标。

第 1 部分: Ajax
简介

(2006 年 1 月 4 日)
Ajax 由 HTML、JavaScript、DHTML 和 DOM 组成,这一优秀的办法能够将工巧的
Web 界面转化成交互性的 Ajax 应用程序。本文的我是壹位 Ajax
专家,他躬体力行了这一个技巧什么协同职业 —— 从全部概述到细节的研讨 —— 使高效的
Web 开采成为切实。他还揭破了 Ajax 宗旨概念的秘密面纱,包括XMLHttpRequest 对象。

将此页作为电子邮件发送

假若你读书了本类别前边的小说,那么应已对数据格式有了一定的认知。前边的篇章解释了在十分多异步应用程序中哪些恰本地使用纯文本和精炼的名称/值对。可以将数据组合成上边那样的情势:

第 2 片段: 使用 JavaScript 和 Ajax
发出异步央浼

(2006 年 2 月 16 日)
许多 Web 应用程序都采用伏乞/响应模型从服务器上收获完整的 HTML
页面。常常是点击贰个开关,等待服务器响应,再点击另七个按键,然后再伺机,那样二个频频的长河。有了
Ajax 和 XMLHttpRequest
对象,就足以选取不必让用户等待服务器响应的伏乞/响应模型了。本文中,BrettMcLaughlin 介绍了何等创建能够适应分化浏览器的 XMLHttpRequest
实例,创设和出殡和埋葬诉求,并响应服务器。

拓展 Tomcat 应用
firstName=Brett&lastName=McLaughlin&email=brett@newInstance.com

第 3 部分: Ajax
中的高等伏乞和响应

(2006 年 3 月 23 日)
对此众多 Web
开垦人士来讲,只须求更换轻松的央浼并摄取简单的响应就能够;不过对于期望精通Ajax 的开荒职员来讲,必供给到家精晓 HTTP 状态代码、就绪状态和
XMLHttpRequest 对象。在本文中,Brett McLaughlin
将向您介绍各类场地代码,并显示浏览器如何对其展开管理,本文还交到了在
Ajax 中采取的相当少见的 HTTP 乞请。

下载 IBM 开源 J2EE 应用服务器 WAS CE 新版本 V1.1

那般就行了,不供给再做哪些了。实际上,Web 老司机缘意识到通过 GET
央求发送的音讯正是应用这种格式。

第 4 部分: 利用 DOM 进行 Web
响应
(2006 年 4 月 10 日)
程序员(使用后端应用程序)和 Web 工程师(编写 HTML、CSS 和 JavaScript
上)之间的层峦叠嶂是长久存在的。不过,Document Object Model (DOM)
弥补了那一个裂缝,使得在后端使用 XML 同一时候在前端接纳 HML
切实可行,并化作最佳有效的工具。在本文中,布雷特 McLaughlin 介绍了
Document Object Model,解释它在 Web 页面中的应用,并伊始开掘其在
JavaScript 中的用途。

级别: 中级

下一场,本种类斟酌了 XML。显著,XML
获得了一定多的关注(正面和负面包车型地铁评论和介绍皆有),已经在 Ajax
应用程序中布满使用。关于怎么样利用 XML 数据格式,能够回看本类别前边的稿子:

第 5 部分: 操纵
DOM
(2006 年 4 月 27 日)
上一期中 Brett 介绍了文书档案对象模型(DOM),它的成分在专擅定义了 Web
页面。这一期小说中他将进一步追究 DOM。明白怎么创设、删除和修改 DOM
树的一一部分,领悟什么贯彻网页的即时更新!

Brett McLaughlin (brett@newInstance.com), 作家,编辑, O’Reilly Media
Inc.

<request>
  <firstName>Brett</firstName>
  <lastName>McLaughlin</lastName>
  <email>brett@newInstance.com</email>
</request>

第 6 部分: 创立依照 DOM 的 Web
应用程序

(2006 年 10 月 12 日)
Brett McLaughlin 通过多少个实际的 DOM 应用程序停止了他的 DOM 编制程序三部曲。

2006 年 12 月 21 日

此处的多少与前面看到的等同,可是那一次选拔 XML
格式。那没怎么惊天动地的;那只是另一种多少格式,使我们能够使用 XML
实际不是纯文本和称号/值对。

第 7 部分: 在呼吁和响应中应用
XML(1)

(2006 年 10 月 23 日)
Brett McLaughlin 示范了怎么使用 XML 数据格式发送异步央浼。

在 本类别的上一篇文章 中,您看到了 Ajax 应用程序如何以 XML
格式化发往服务器的央浼。还叩问了为什么那在大部景色下实际不是四个好主意。那篇小说重要探求在许多意况下确实是
好主意的一种做法:向客户机再次来到 XML 响应。

本文探讨另一种多少格式,JavaScript Object NotationJSON)。JSON
看起来既纯熟又面生。它提供了另一种选取,选取范围越来越大总是好工作。

第 8 部分:在哀告和响应中选取XML(2)
(2006 年 10 月 23 日)
那篇小说首要查究在大好多景况下 确实是 好主意的一种做法:向客户机再次回到XML 响应。

自己骨子里并反感写这种主要告诉您什么不应该
做的小说。比比较多时候,那都会是一篇十三分古板的篇章。小编要在前半篇小说中解释某个事物,然后在后半篇小说中证实使用你刚刚才学会的这种技巧是叁个多么不佳的主张。在异常的大程度上,上一期小说即是如此一种情景(若是你错过了那一期小说,请查看
参谋资料 中的链接),那篇作品教您怎么样将 XML 作为 Ajax
应用程序的乞请数据格式使用。

挑选的意思

第 9 部分:使用 Google Ajax Search
API
(2007 年 3 月 1 日)
发生异步央求并不意味只是与你自个儿的服务器端程序交互。其实也得以与一些国有
API,比方来自 Google 或 亚马逊 的 API 举办通讯,进而为 Web
应用程序扩充你本人的剧本和服务器端程序所不可能提供的越多效果与利益。本文将教您怎么向国有
API,譬如 谷歌(Google) 提供的 API 发出需要并收受其响应。

但愿那篇文章能够弥补您开支在攻读 XML 诉求上的时刻。在 Ajax
应用程序中,使用 XML 作为发送数据的格式的理由比相当少,但使服务器
客户机回发 XML 的理由非常多。由此,您在上一篇文章中学到的有关 XML
的文化最后就要这篇小说中展现出某个价值。

在深远钻研 JSON
格式的细节从前,您应该通晓怎么要用两篇小说斟酌另一种多少格式(是的,本种类中的下一篇作品也切磋JSON),特别在早已领会了什么利用 XML
和纯文本的名称/值对的气象下。其实,原因很简短:消除其余难点的选料越多,找到题指标最佳
消除方案的大概性就越大,那比只可以动用一个 消除方案要好得多。

第 10 部分:使用 JSON
进行数量传输

(2007 年 4 月 9 日)
在异步应用程序中发送和收受消息时,能够选拔以纯文本和 XML
作为数据格式。精通 Ajax 的这一期研究另一种有效的数目格式 JavaScript
Object
Notation(JSON),以及怎样利用它更轻巧地在应用程序中移动多少和指标。

服务器(有的时候)无法响应太多的央求

追忆名称/值对和 XML

 

在深切钻研从服务器获取 XML
响应的技术从前,您必要掌握,为啥说使服务器发送 XML
来响应乞请是四个好主意(以及这与客户机发送 XML 央求例外的由来所在)。

转载链接,在呼吁和响应中运用。本连串已经用了大量篇幅商量适合利用名称/值对和 XML
的场所。总是应该率先思考采用名称/值对。对于大多异步应用程序中的难点,使用名称/值对大约总是最简便的消除方案,并且它只供给特别基本的
JavaScript 知识。

客户机以名称/值对出殡和埋葬供给

实 际上,除非有某种限制迫使您转向
XML,不然用不着思虑使用别的数据格式。显明,假设要向内需 XML
格式的输入的劳务器端程序发送数据,那么希望利用 XML
作为数据格式。可是,在大部意况下,对于需求向应用程序发送多段消息的服务器,XML
是越来越好的选拔;换句话说,XML 经常更适合用来 Ajax
应用程序做出响应,并非 Ajax 应用程序发出需求。

忆起一下上一篇小说,就可以通晓,在好多情景下,客户机无需接纳XML,因为她们会接纳名称/值对出殡和埋葬央求。由此,您或然会发送三个这么的名目:name=jennifer。只需轻松地在一而再的称谓/值对里面加多二个“与”
符号(&),就可以将其放在一起,仿佛这么:name=jennifer&job=president。使用轻巧的文本和这几个名称值对,客户机就可以轻巧向服务器央浼多少个值。比很少要求用到
XML 提供的额外结构(及其带来的额外开支)。

添加 JSON

实际上,必要向服务器发送 XML
的具备理由都大概能够归入以下八个主导的档期的顺序中:

在 使用名称/值对或 XML 时,实际上是选择 JavaScript
从应用程序中赢得数据并将数据转变到另一种多少格式。在那么些景况下,JavaScript
在相当大程度上作为一种多少垄断语言,用来运动和垄断(monopoly)来自 Web
表单的数据,并将数据调换为一种适合发送给服务器端程序的格式。

  • 服务器 接受 XML
    请求。
    在那类意况下,您别无采取。上期作品中介绍的基础知识应已使您通晓了发送此类诉求所必需的工具。
  • 你正在调用三个仅收受 XML 或 SOAP 哀告的长距离
    API。
    那实在正是上一种意况的特例,但值得单独拿出来提一下。如若你希望在叁个异步央求中接纳来源
    谷歌 或 亚马逊(Amazon) 的
    API,就能够有一对格外的设想事项。在上一期的文章中,笔者将介绍这个思量事项,还有也许会交到一些向
    API 发送此类央浼的演示。

只是,临时候 JavaScript
不仅作为格式化语言使用。在这么些情况下,实际上选择 JavaScript
语言中的对象来表示数据,而不仅仅是今后自 Web
表单的多寡放进伏乞中。在那几个情形下,从 JavaScript
对象中提取数额,然后再将数据放进名称/值对或 XML,就一些小题大作
了。那时就特别使用 JSON:JSON 允许轻便地将 JavaScript
对象调换来能够随央浼发送的数目(同步或异步都足以)。

服务器非常的小概(以一种标准措施)发送名称/值对

JSON
并非某种魔弹;不过,它对于某个极度出色的气象是很好的挑选。不要以为你不会遇见那么些意况。阅读本文和下一篇文章来打听
JSON,这样,遇到那类难题时你就明白该咋办了。

在您发送名称/值对时,Web
浏览器会发送诉求,平台会响应该乞求,并承载八个服务器程序,协作它将这多少个名称/值对转变到服务器程序能够轻易管理的数额。实际上,种种服务器端技巧—— 从 Java™ servlet 到 PHP、再到 Perl、Ruby on Rails ——
都允许你调用各种措施来依据名称获取值。因而,获取 name
属性只是小事一桩。


这种状态并不会将我们引向另外三个主旋律。假诺服务器使用字符串
name=jennifer&job=president
应答多少个应用程序,客户机未有别的条件的省事方法来将各种对拆分成名称和值。您必须手动深入分析所重临的数量。如若服务器再次来到一个由名称/值对组合的响应,那样的响应的表达难度与行使分号、竖线或任何任何非规范格式化字符一样。

回页首
给我一点空间!

在绝大多数 HTTP 请求中,转义序列 %20 用于表示一个空格,文本 “Live Together, Die Alone” 将以 Live%20Together,%20Die%20Alone 的形式通过 HTTP 发送。

JSON 基础

对于你来讲,这就象征未有其余轻巧的秘诀在响应中动用纯文本、使客户机以一种规范的章程赢得并表明响应,至少在响应包蕴四个值时是那样。若是你的服务器只是要发回数字
42,那么纯文本是很好的选料。但只要服务器要叁回性发回影视剧 Lost, Alias
Six Degrees
的近年收看TV率又该咋做吧?就算能够挑选过各类办法来行使纯文本发送这一响应(清单
1
给出了部分演示),但尚无一种是不需客户机举行一些管理的Infiniti轻易的不二秘技,也并未有一种是条件的不二秘诀。

简 单地说,JSON 能够将 JavaScript
对象中表示的一组数据转换为字符串,然后就足以在函数之间轻松地传递那些字符串,恐怕在异步应用程序中将字符串从
Web
客户机传递给劳务器端程序。这些字符串看起来有些离奇(稍后会看到多少个示范),然则JavaScript 很轻松解释它,并且 JSON
能够表示比名称/值对更复杂的结构。比如,能够代表数组和复杂性的靶子,而不光是键和值的简便列表。

清单 1. 收看电视机率的服务器响应(差异版本)

简单 JSON 示例

show=Alias&ratings=6.5|show=Lost&ratings=14.2|show=Six%20Degrees&ratings=9.1

Alias=6.5&Lost=14.2&Six%20Degrees=9.1

Alias|6.5|Lost|14.2|Six%20Degrees|9.1

遵从最简单易行的款型,能够用下边那样的 JSON 表示名称/值对:

就算轻便找到拆分这几个响应字符串的艺术,但客户机将不得不依照支行、等号、竖线和与符号分析并拆分这么些字符串。那不是编写制定使任何开采职员能够轻巧驾驭和爱慕的健康代码的方法。

{ "firstName": "Brett" } 

进入 XML

这几个示例特别基本,并且实际比同等的纯文本名称/值对挤占越来越多的长空:

开掘到未有别的正规的主意能够使服务器使用名称/值对响应客户机之后,使用
XML
的因由也就明摆着了。向客户机发送数据时,名称/值对是非常好的挑选,因为服务器和服务器端语言能够轻巧解释名称/值对;向客户机返回数据时采纳XML 也是那样。在本类别前几期的文章中,您已经见到了动用 DOM 来深入分析XML,在持续的稿子中,还有大概会看到 JSON 怎么着提供问询析 XML
的另一种选拔。在有着那全体之上,您能够将 XML
作为纯文本甩卖,并以这种艺术赢得其值。由此,有三种艺术可从服务器获得 XML
响应,并选用较为规范的代码提取数额,在客户机中使用这么些数据。

firstName=Brett

再有多少个额外的补益,XML 非常轻便精晓。举个例子说,大相当多编写程序的人都能理解清单 2 中的数据。

但是,当将八个名称/值对串在一块儿时,JSON
就能够反映出它的市场总值了。首先,能够成立满含多少个名称/值对的记录,比如:

清单 2. 收看TV率的服务器响应(XML 格式)

{ "firstName": "Brett", "lastName":"McLaughlin", "email": "brett@newInstance.com" }

<ratings>
 <show>
  <title>Alias</title>
  <rating>6.5</rating>
 </show>
 <show>
  <title>Lost</title>
  <rating>14.2</rating>
 </show>
 <show>
  <title>Six Degrees</title>
  <rating>9.1</rating>
 </show>
</ratings>

从语法方面来看,这与名称/值对比较并未有异常的大的优势,然而在这种景色下 JSON
更便于接纳,何况可读性越来越好。举例,它显明地意味着以上多少个值都以一模二样记录的一片段;花括号使那几个值有了某种关联。

在特定分号或撇号的含义方面,清单 2 中的代码未有别的隐晦之处。

值的数组


当 须要代表一组值时,JSON
不但能够拉长可读性,并且能够减小复杂性。譬喻,假设您愿意代表一人名列表。在
XML
中,须求多多方始标识和了结标识;要是接纳规范的称号/值对(就好像在本种类后边文章中看到的这种名称/值对),那么必须树立一种专有的多少格式,大概将键
名称修改为 person1-firstName 那样的款型。

回页首

假使使用 JSON,就只需将几个带花括号的笔录分组在一块:

从服务器收到 XML

{ "people": [
  { "firstName": "Brett", "lastName":"McLaughlin", "email": "brett@newInstance.com" },
  { "firstName": "Jason", "lastName":"Hunter", "email": "jason@servlets.com" },
  { "firstName": "Elliotte", "lastName":"Harold", "email": "elharo@macfaq.com" }
]}

是因为本种类的要紧在于 Ajax
应用形式的客户端,因而作者不会深切商量关于劳动器端程序怎么着技能生成 XML
响应的细节。但在你的客户机接收 XML
时,您必要领会一些独辟蹊径的设想事项。

那轻易通晓。在那一个示例中,独有一个名称为 people
的变量,值是带有多少个条目款项的数组,每个条目款项是一人的记录,个中包蕴名、姓和电子邮件地址。上边的演示演示怎么着用括号将记录组合成三个值。当然,能够运用一样的语法表示多个值(种种值包罗多少个记录):

率先,您可使用三种基本的主意管理叁个源点服务器的 XML 响应:

{ "programmers": [
  { "firstName": "Brett", "lastName":"McLaughlin", "email": "brett@newInstance.com" },
  { "firstName": "Jason", "lastName":"Hunter", "email": "jason@servlets.com" },
  { "firstName": "Elliotte", "lastName":"Harold", "email": "elharo@macfaq.com" }
 ],
"authors": [
  { "firstName": "Isaac", "lastName": "Asimov", "genre": "science fiction" },
  { "firstName": "Tad", "lastName": "Williams", "genre": "fantasy" },
  { "firstName": "Frank", "lastName": "Peretti", "genre": "christian fiction" }
 ],
"musicians": [
  { "firstName": "Eric", "lastName": "Clapton", "instrument": "guitar" },
  { "firstName": "Sergei", "lastName": "Rachmaninoff", "instrument": "piano" }
 ]
}
  • 用作碰巧被格式化为 XML 的纯文本
  • 用作叁个 XML 文书档案,由贰个 DOM Document 对象表示。

此间最值得注意的是,能够代表多少个值,每一个值进而包括四个值。可是还应该专注,在不一致的主条款(programmers、authors
和 musicians)之间,记录中其实的称号/值对能够不同。JSON
是截然动态的,允许在 JSON 结构的高级中学级改动表示数据的方法。

协助,例如来讲,借使有一个源点服务器的不难 XML 响应。清单 3
展现了与地点介绍的原委一律的收看电视机率程序清单(实际上,是与 清单 2 一样的
XML,在此间再度提交只是为着让你便于查看)。作者将要这一部分的座谈中选用这段样本
XML。

在拍卖 JSON
格式的数据时,未有索要遵从的预订义的自律。所以,在一样的数据结构中,能够变动表示数据的艺术,以至足以以分裂措施表示无差异事物。

清单 3. XML 格式的收看TV率示例



<ratings>
 <show>
  <title>Alias</title>
  <rating>6.5</rating>
 </show>
 <show>
  <title>Lost</title>
  <rating>14.2</rating>
 </show>
 <show>
  <title>Six Degrees</title>
  <rating>9.1</rating>
 </show>
</ratings>

回页首

将 XML 作为纯文本甩卖

在 JavaScript 中使用 JSON

管理 XML
的最简便的选料(至少就学习新的编制程序本领来说),正是用与拍卖服务器再次来到的别的文件片段同样的不二诀窍来管理它。换言之,基本上正是忽视数据格式,只关怀服务器的响应。

支配了 JSON 格式之后,在 JavaScript 中利用它就相当粗略了。JSON 是
JavaScript 原生格式,那代表在 JavaScript 中管理 JSON
数据无需其余例外的 API 或工具包。

在这种景色下,您要选拔央浼对象的 responseText
属性,仿佛在服务器向您发送非 XML 响应时一样(参见 清单 4)。

将 JSON 数据赋值给变量

清单 4. 将 XML 作为一般服务器响应管理

举个例子,可以创建一个新的 JavaScript 变量,然后将 JSON
格式的数额字符串直接赋值给它:

function updatePage() {
  if (request.readyState == 4) {
    if (request.status == 200) {
      var response = request.responseText;

      // response has the XML response from the server
      alert(response);
    }
  }
}
var people =
  { "programmers": [
    { "firstName": "Brett", "lastName":"McLaughlin", "email": "brett@newInstance.com" },
    { "firstName": "Jason", "lastName":"Hunter", "email": "jason@servlets.com" },
    { "firstName": "Elliotte", "lastName":"Harold", "email": "elharo@macfaq.com" }
   ],
  "authors": [
    { "firstName": "Isaac", "lastName": "Asimov", "genre": "science fiction" },
    { "firstName": "Tad", "lastName": "Williams", "genre": "fantasy" },
    { "firstName": "Frank", "lastName": "Peretti", "genre": "christian fiction" }
   ],
  "musicians": [
    { "firstName": "Eric", "lastName": "Clapton", "instrument": "guitar" },
    { "firstName": "Sergei", "lastName": "Rachmaninoff", "instrument": "piano" }
   ]
  }
前文回顾

为避免出现大量重复的代码,本系列这些后续的文章只给出与所探讨的主题相关的那部分代码。因此,清单 4 仅仅展示了 Ajax 客户机代码中的回调方法。如果您对于此方法在更大的异步应用程序环境中的位置尚不清楚,应回顾本系列的前几篇文章,那些文章介绍了 Ajax 应用程序的基础知识。参考资料 中列出了前几篇文章的链接。

这特别轻便;今后 people 包蕴前边看到的 JSON
格式的数码。不过,那还非常不够,因为访谈数据的艺术就如还不明显。

在那几个代码片段中,updatePage() 是回调方法,request
XMLHttpRequest 对象。最后,您将获取把具有一切串联在一块儿的 XML
响应,位于 response 变量之中。假诺出口此变量,您会获得近似于清单 5
的结果。(请留神,清单 第55中学的代码在正规意况下应当是三番两次的一个代码行。这里运用多行格局是为着呈现符合规律。)

做客数据

清单 5. response 变量的值

尽 管看起来不显明,可是上边的长字符串实际上只是三个数组;将那么些数组放进
JavaScript
变量之后,就足以很自在地拜谒它。实际上,只需用点号表示法来表示数组成分。所以,要想会见programmers 列表的首先个条指标姓氏,只需在 JavaScript
中利用下边那样的代码:

<ratings><show><title>Alias</title><rating>6.5</rating>
</show><show><title>Lost</title><rating>14.2</rating></show><show>
<title>Six Degrees</title><rating>9.1</rating></show></ratings>
people.programmers[0].lastName;

这里,要细心的最要害的地点便是 XML
是当做完全运会行的。在大部景况下,服务器不会动用空格和回车来格式化
XML,而是将全体串联在联合签字,就像是您在 清单 5中看到的那样。当然,您的应用程序不会超负荷在意空格,所以那算不上什么难题,但实在会使代码阅读起来比较困难。

只顾,数组索引是从零初始的。所以,那行代码首先访问 people
变量中的数据;然后移动到称为 programmers
的条目款项,再移动到第贰个记录([0]);最后,访问 lastName
键的值。结果是字符串值 “McLaughlin”。

在这里,您能够采用 JavaScript split
函数来拆分此数量,并通过大旨的字符串操作来赢得成分的名目和值。没有疑问,那是个令人发烧的历程,它无视于您开支了汪洋年华来读书前几期小说中
DOM(Document Object
Model)相关内容这一真情。由此,小编要重申,您应该牢记:利用
responseText,能够轻易利用和出口服务器的 XML
响应,但自己不会为你体现太多的代码,在能力所能达到利用 DOM
时,您不应采用这种情势来得到 XML 数据,上面您拜见到那或多或少。

上边是采纳同样变量的多少个示范。

将 XML 当成 XML

people.authors[1].genre   // Value is "fantasy"

people.musicians[3].lastName  // Undefined. This refers to the fourth entry,
 and there isn't one

people.programmers.[2].firstName // Value is "Elliotte"

尽管可以 将服务器的 XML
格式的响应视同为任何任何文件响应来拍卖,但那样做未有很好的说辞。首先,如果您一直忠实地翻阅这几个连串,那么您曾经学会了怎么行使
DOM 这种对 JavaScript 友好的 API 来垄断(monopoly) XML。还应该有更加好的业务,JavaScript
XMLHttpRequest 对象提供了壹性格子,它能完善地赢得服务器的 XML
响应,况兼是以 DOM Document 对象的花样来获取它。

选用那样的语法,能够拍卖其余 JSON 格式的数量,而无需选拔另外附加的
JavaScript 工具包或 API。

清单 6 给出了二个实例。这段代码与 清单 4 类似,但不曾动用 responseText
属性,回调函数使用的是 responseXML 属性。该属性在 XMLHttpRequest
上可用,它以 DOM 文书档案的格式再次回到服务器的响应。

修改 JSON 数据

清单 6. 将 XML 当作 XML

正如能够用点号和括号访谈数据,也能够依照同等的办法轻巧地修改数据:

function updatePage() {
  if (request.readyState == 4) {
    if (request.status == 200) {
      var xmlDoc = request.responseXML;

      // work with xmlDoc using the DOM
    }
  }
}
people.musicians[1].lastName = "Rachmaninov";

以后你有了贰个 DOM Document,能够像管理任何任何 XML
同样管理它。举个例子,随后恐怕要赢得具备 show 元素,如 清单 7 所示。

在将字符串转变为 JavaScript 对象之后,就能够像这样修退换量中的数据。

清单 7. 拿走具有 show 成分

改动回字符串

function updatePage() {
  if (request.readyState == 4) {
    if (request.status == 200) {
      var xmlDoc = request.responseXML;

      var showElements = xmlDoc.getElementsByTagName("show");
    }
  }
}

理当如此,如若不可能自在地将对象调换回本文提到的文本格式,那么富有数据修改都尚未太大的价值。在
JavaScript 中这种转移也很轻易:

淌若您熟谙DOM,从那儿开首,看起来就应该有几分熟谙了。您能够行让你所理解的全体 DOM
方法,轻易垄断从劳动器处接收到的 XML。

String newJSONtext = people.toJSONString();

自然,您也可以混用普通的 JavaScript 代码。比如,能够遍历全体 show
元素,如 清单 8 所示。

像这种类型就行了!现在就收获了多少个足以在其余地方选取的文本字符串,举个例子,能够将它用作
Ajax 应用程序中的伏乞字符串。

清单 8. 遍历全数 show 成分

更要紧的是,能够将任何 JavaScript 对象转变为 JSON
文本。并不是只可以管理原本用 JSON 字符串赋值的变量。为了对名称叫 myObject
的对象实行改造,只需进行同样款式的一声令下:

function updatePage() {
  if (request.readyState == 4) {
    if (request.status == 200) {
      var xmlDoc = request.responseXML;

      var showElements = xmlDoc.getElementsByTagName("show");
      for (var x=0; x<showElements.length; x++) {
        // We know that the first child of show is title, and the second is rating
        var title = showElements[x].childNodes[0].value;
        var rating = showElements[x].childNodes[1].value;

        // Now do whatever you want with the show title and ratings
      }
    }
  }
}
String myObjectInJSON = myObject.toJSONString();

由此这段极度轻易的代码,您就是将 XML 响应作为 XML
并不是无格式的纯文本进行了管理,还运用了好几 DOM 和回顾的 JavaScript
来拍卖服务器响应。更重视的是,您使用了尺度的格式 ——
XML,而不是以逗号分隔的值或以竖线分隔的名称/值对。换句话说,您将 XML
用在了最适合它的地点,制止了在不适合的地点使用它(比方说向服务器发送诉求时)。

那正是 JSON 与本种类斟酌的任何数据格式之间最大的差异。假使使用
JSON,只需调用三个轻便易行的函数,就足以获取通过格式化的数额,能够直接选择了。对于另外数据格式,必要在原本数据和格式化数据里面开始展览转变。纵然使用
Document Object Model 那样的
API(提供了将自身的数据结构转变为文本的函数),也要求学习这几个 API 并采取API 的指标,而不是应用原生的 JavaScript 对象和语法。

劳动器端的 XML:叁个轻松的亲自过问

最后定论是,要是要管理多量 JavaScript 对象,那么 JSON
大概确定是三个好接纳,那样就能够轻便地将数据调换为可以在呼吁中发送给服务器端程序的格式。

自个儿不交涉太多关于怎样在服务器上生成 XML
的内容,但花点儿时间看多个粗略的示范是值得的,小编未有提交过多的疏解,以便你自行思量如何回应那样的意况。清单
9 浮现了贰个轻便易行的 PHP
脚本,倘诺有多个异步客户机发出了央求,该脚本将出口 XML 来应答此央求。


这是一种强力(brute force)的章程,PHP 脚本实际上是手动生成 XML
输出。您能够找到好多工具包和 API,用于 PHP 和任何十分多同意你生成 XML
响应的劳动器端语言。无论你的场地怎么着,那都至少能让您掌握生成 XML
并以之应答诉求的劳务器端脚本看上去是如何体统。

回页首

清单 9. 返回 XML 的 PHP 脚本

结束语

<?php

// Connect to a MySQL database
$conn = @mysql_connect("mysql.myhost.com", "username", "secret-password");
if (!conn)
  die("Error connecting to database: " . mysql_error());

if (!mysql_select_db("television", $conn))
  die("Error selecting TV database: " . mysql_error());

// Get ratings for all TV shows in database
$select = 'SELECT title, rating';
$from   = '  FROM ratings';
$queryResult = @mysql_query($select . $from);
if (!$queryResult)
  die("Error retrieving ratings for TV shows.');

// Let the client know we're sending back XML
header("Content-Type: text/xml");
echo "<?xml version=/"1.0/" encoding=/"utf-8/"?>";
echo "<ratings>";

while ($row = mysql_fetch_array($queryResult)) {
  $title = $row['title'];
  $rating = $row['rating'];

  echo "<show>
  echo "<title>" . $title . "</title>";
  echo "<rating>" . $rating . "</rating>";
  echo "</show>";
}

echo "</ratings>";

mysql_close($conn);

?>


体系已经用大方岁月斟酌了数码格式,那关键是因为差不离具备异步应用程序最后都要拍卖多少。假使掌握了发送和接受全部品种的数指标各样工具和技能,并依据最
适合各类数据类型的办法利用它们,那么就能够更领会 Ajax。在明白 XML
和纯文本的底子上,再精通 JSON,那样就能够在 JavaScript
中拍卖更复杂的数据结构。

4858美高梅,你应能够运用你偏幸的服务器端语言以临近的法子出口 XML。IBM developerWorks
上有大多稿子能够扶助您明白什么运用你爱怜的服务器端语言生成 XML
文档(相关链接请参见 参谋资料)。

本连串中的下一篇小说将研商发送数据以外的主题素材,深切介绍服
务器端程序如何接受和管理 JSON
格式的数额。还要斟酌服务器端程序如何跨脚本和劳务器端组件以 JSON
格式发送回数据,那样就足以将 XML、纯文本和 JSON
央浼和响应混合在共同。那能够提供相当的大的灵活性,能够服从差没多少任何组合结合使用全部这个工具。


参照他事他说加以考察资料

回页首

学习

解释 XML 的其余可选方法

  • 你能够参见本文在 developerWorks 举世站点上的 日语原版的书文 。

  • 左右 Ajax:阅读本类别以前的篇章。

  • JSON.org:访谈 JSON Web 站点来更是询问这种多少格式,富含到三种JSON API 完成的链接。

  • 有好些个 developerWorks 文章商讨了更高档的 JSON 大旨:

    • “Convert XML to JSON in PHP”(Senthil Nathan、Edward J. Pring 和
      John Morar,2007 年 1 月)
    • “用 JSON 管理缓存”(Bakul L. 帕特el,2005 年 10 月)
    • “Generate JSON from XML to use with Ajax”(Jack D.
      Herrington,2006 年 9 月)

除将 XML 作为无格式文本管理或选择 DOM
管理之外,还应该有一种非常的红的选择很首要,值得说。那正是
JSON(JavaScript Object Notation),那是一种绑定在 JavaScript
内的妄动文本格式。那篇小说中从不充裕的长空介绍
JSON,在三番两次文章少将商讨相关内容;只要提及 XML 和 Ajax
应用程序,您就很恐怕会听到有人议论JSON,因而未来自己将告诉您,您的办事友大家在研商的毕竟是哪些。

  • developerWorks XML 专区:在 developerWorks XML 专区精晓 XML
    的有着地点。

  • xml.com:驾驭关于 XML 的具有方面包车型客车好财富。

  • “创设动态的 Java 应用程序”(Philip McCarthy,developerWorks,二〇〇五 年
    9 月):从 Java 的角度省视服务器端的 Ajax。

  • “Ajax 的 Java 对象体系化”(Philip McCarthy,developerWorks,二零零六 年
    10 月):从 Java 的角度研讨什么通过网络发送对象并与 Ajax
    进行互动。

  • “塑造 Web 服务客户机”(詹姆斯 Snell,developerWorks,二〇〇五 年 三月):这是一篇异常高档的稿子,它介绍了将 Ajax 与现有的遵照 SOAP 的
    Web 服务相集成的关于内容。

  • World Wide Web Consortium 上的 DOM 主页:理解全数 DOM
    相关本领的源点。

  • The DOM Level 3 Core Specification:精晓大旨 Document Object Model
    的概念,从可用类型和属性直到在各样语言中运用 DOM 的章程。

  • The ECMAScript language bindings for DOM:希望在代码中使用 DOM
    的其他 JavaScript 程序员都应有阅读那么些正式。

  • “Ajax: A new approach to Web applications”(Jesse James
    Garrett,Adaptive Path,二〇〇七 年 2 月):阅读那篇首创 Ajax
    这几个术语的篇章。那是装有 Ajax 开辟人士的必读作品。

大概上,能够用 JSON 做的事,用 DOM
都能够成功,反之亦然;采纳关键在于偏疼,当然也要为特定的应用程序选取精确的点子。就现行反革命来讲,您应持之以恒使用
DOM,在接收服务器响应的历程中熟练DOM。小编将占用几期小说的篇幅、用豁达的年华去追究
JSON,之后你就足以自由挑选在下一个应用程序中选取这种工夫了。请继续关怀本体系:后续作品上校介绍有关
XML 的越来越多内容。

赢得产品和本事


  • Head Rush Ajax (Brett McLaughlin,O’Reilly Media,二〇〇七年):学习那篇小说中的观念,并将扎实印入脑海:Head First 风格。

  • Java and XML, Second Edition (Brett McLaughlin,O’Reilly Media,
    Inc.,2003 年):查看本文小编对 XHTML 和 XML 调换的商酌。

  • JavaScript: The Definitive Guide (大卫 Flanagan,O’Reilly Media,
    Inc.,二〇〇四 年):深入探究了管理 JavaScript 和动态 Web
    页面包车型地铁大度指点标准。将要生产的版本增多了有关 Ajax 的两章。

  • Head First HTML with CSS & XHTML (Elizabeth 与 EricFreeman,O’Reilly Media, Inc.,二〇〇五 年):精晓关于标准 HTML 和
    XHTML 的越来越多内容,学习怎么着对 HTML 应用 CSS。

  • IBM 试用软件:使用这个可一贯从 developerWorks
    下载的软件营造您的下二个支付项目。

回页首

讨论

结束语

  • 透过出席 developerWorks blog 出席 developerWorks 社区。

从本种类上一篇小说开篇起,笔者差不离一向在研讨 XML,但对于 XML 在 Ajax
应用方式中的进献来讲,我接触的照旧独有是外表。在上一期作品中,您将更详实地问询那四个你将希望
发送 XML 的标新立异意况(还有只怕会看到那么些急需吸取 XML 的景色)。具体来讲,您会在
Ajax 交互的角度上重点 Web 服务 —— 富含专有 Web 服务和 Google 那样的
API。

 

轻松,最关键的职责正是考虑对于你的应用程序,XML
在什么样时候才是有意义的。在广大情形下,假诺你的应用程序工作优异,XML
只然而是又八个让你头痛的才能最新词汇,您应该调整住仅仅为了宣称应用程序中有
XML 而品尝它的激动。

原文URL:

只要您处于那样叁个条件中:服务器向你发送的多寡特别有限,也许使用的是想获得的逗号分隔、竖线分隔的格式,那么
XML
大概会给你带来真正的收入。思量管理或转移您的劳务器端组件,以使它们用尤其标准的艺术
—— 使用 XML —— 来回到响应,而不是运用那么些健壮性比 XML 差的专项使用格式。


最重大的是,要认知到,您对 Ajax
相关工夫精晓的更多,就必须越稳重地拟订决策。编写那么些 Web 2.0
应用程序确实很风趣(在再三再四小说中,您将重临用户分界面,看看能够在此间做些什么很酷的事物),但要注意,确定保证您不是为了向朋友炫彩而在二个得以不荒谬干活的
Web
页面上滥用这一个技术。作者坚信,您能编写出杰出的应用程序,那么就起初去做吗。达成后,再重返读书上一期文章,学习有关
XML 的更加多文化。

参照他事他说加以考察资料

学习

  • 你能够参见本文在 developerWorks 全世界站点上的 德文原来的小说 。

  • 左右 Ajax 体系:阅读本种类的别的作品。

  • developerWorks 中中原人民共和国网址 XML 专区:访问 developerWorks 中夏族民共和国网址 XML
    专区,获得多量的才具作品与技巧、教程、典型和 IBM 红皮书。

  • developerWorks 中夏族民共和国网址 Web development 专区:获取有关 Web
    2.0、Ajax、wikis、PHP、mashup 和另外 Web 项指标能源。

  • developerWorks 中夏族民共和国网址 Open source
    专区:获得开放源码开荒与贯彻的能源。

  • “用 JSON 管理缓存”(巴库l L. Patel,developerWorks,二〇〇六 年 四月):学习在客户端缓存验证元数据。

  • “技能:使用 StAX 编写 XML 文书档案”(Berthold Daum,developerWorks,二〇〇〇年 1 月):阅读那篇简短的技巧性作品,驾驭使用低端、基于游标的 StAX
    API 创造 XML 文书档案的一种艺术。

  • “Servlets and XML: Made for each other”(DougTidwell,developerWorks,两千 年 5 月):阅读那篇小说,了然怎么将
    Java servlet 与 XML 一齐利用,并从服务器端生成 XML。

  • “XML 难题:使用 Python 模块 xml2sql 和 dtd2sql”(DavidMertz,developerWorks,二〇〇二 年 6 月):那篇演示性小说介绍了 Python
    提供的五个流行的 XML 相关模块,学习生成 SQL
    语句以创立并填写二个数据库。

  • “面向 Java 开拓人员的 Ajax:构建动态的 Java 应用程序”(Philip
    McCarthy,developerWorks,2007 年 10 月):从 Java
    的角度看一看服务器端的 Ajax。

  • “面向 Java 开辟人士的 Ajax:Ajax 的 Java 对象类别化”(Philip
    麦卡锡,developerWorks,二〇〇五 年 10 月):从 Java
    的角度观察怎么着通过互联网发送对象并与 Ajax 交互。

  • “使用 AJAX 调用 SOAP Web 服务,第 1 有些:营造 Web
    服务客户机”(詹姆斯 Snell,developerWorks,2007 年 5月):深入钻研那篇较为高等的小说,它介绍了将 Ajax 与现成基于 SOAP 的
    Web 服务相集成的关于内容,表达了怎么着使用 Ajax 设计方式完结四个基于
    Web 浏览器的 SOAP Web 服务。

  • xml.com:最轻巧精通的在线财富之一,如若您还不是一名经验丰裕的 XML
    技士,那么就从这里开头驾驭有关 XML 的万事吧!

  • World Wide Web Consortium 的 DOM 主页:访谈一切 DOM
    相关技巧的源点。

  • The DOM Level 3 Core Specification:定义宗旨 Document Object
    Model,从可用类型和属性一向到在 DOM 在种种语言中的使用。

  • The ECMAScript language bindings for DOM:假如您是一名 JavaScript
    工程师,希望在代码中使用 DOM,那么或然会对 Level 3 Document Object
    Model Core 定义的那份附录感兴趣。

  • “Ajax: A new approach to Web applications”(Jesse James
    Garrett,Adaptive Path,二零零五 年 2 月):阅读那篇定位 Ajax 的稿子
    —— 那是具有 Ajax 开荒职员的必读小说。

  • developerWorks 才具活动 和
    网络广播:随时关注那个面向技能开垦人士的软件简报。

赢得产品和技艺

  • Head Rush Ajax(Brett McLaughlin,O’Reilly Media,二零零六年):将那篇小说中介绍的见解印入您的大脑:Head First 风格。

  • Java and XML, Second Edition(Brett McLaughlin,O’Reilly Media,
    Inc.,二零零零 年):查看本文小编对 XHTML 和 XML 调换的座谈。

  • JavaScript: The Definitive Guide(大卫 Flanagan,O’Reilly Media,
    Inc.,二零零一 年):长远商讨了拍卖 JavaScript 和动态 Web
    页面包车型大巴大方教导原则。将要推出的本子增多了有关 Ajax 的两章。

  • Head First HTML with CSS & XHTML(伊Lisa白 与 埃里克Freeman,O’Reilly Media, Inc.,二〇〇七 年):领会标准化 HTML 和 XHTML
    的更加多内容,学习怎么为 HTML 应用 CSS。

  • IBM 试用版软件:使用那些可直接在 developerWorks
    下载的软件创设您的下一个开支项目。

讨论

  • developerWorks blogs:加入 developerWorks 社区。

  • developerWorks 的 Ajax 论坛:在那个由正在上学或频仍利用 Ajax 的 Web
    开荒职员组成的论坛中学习、商量、分享文化。

关于作者

4858美高梅 5

4858美高梅 6

4858美高梅 7

Brett McLaughlin 从 Logo时期就从头采用微机。(还记得极小三角吗?)近些日子,他已经产生 Java 和
XML 社区最出名的撰稿人和技术员之一。他早就在 Nextel Communications
落成过复杂的商城系统,在 Lutris Technologies 编写过应用服务器,近些日子在
O’Reilly Media, Inc. 继续撰写和编写制定那方面包车型地铁书本。Brett 将要出版的新书
Head Rush Ajax,和紧俏书笔者 Eric 与 Beth Freeman 一齐为 Ajax
带来了获奖的开发性 Head First 方法。近期的文章 Java 1.5 Tiger: A
Developer’s Notebook
是关于 Java 手艺最新版本的首先本书,美貌的 Java
and XML
依旧是在 Java 语言中动用 XML 技能的高尚小说。

对本文的褒贬

太差! (1)
需提高 (2)
一般;尚可 (3)
好文章 (4)
真棒!(5)

建议?

 

回页首

4858美高梅 8

IBM 公司保存在 developerWorks
网站上登载的剧情的小说权。未经IBM公司或原始作者的封皮显明批准,请勿转发。倘若你希望转发,请通过
提交转载诉求表单 联系大家的编写制定团队。 


发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图
Copyright @ 2010-2019 美高梅手机版4858 版权所有