《Ajax实战》三部曲之“王者归来”

Ajax实战精要
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <meta name="ProgId" content="Word.Document"> <meta name="Generator" content="Microsoft Word 12"> <meta name="Originator" content="Microsoft Word 12"> <link rel="File-List" href="file:///C:%5CWindows%5CTEMP%5Cmsohtmlclip1%5C01%5Cclip_filelist.xml"> <link rel="Preview" href="file:///C:%5CWindows%5CTEMP%5Cmsohtmlclip1%5C01%5Cclip_preview.wmf"> <!--[if gte mso 9]><xml> <o:DocumentProperties> <o:Version>12.00</o:Version> </o:DocumentProperties> </xml><![endif]--><link rel="themeData" href="file:///C:%5CWindows%5CTEMP%5Cmsohtmlclip1%5C01%5Cclip_themedata.thmx"> <link rel="colorSchemeMapping" href="file:///C:%5CWindows%5CTEMP%5Cmsohtmlclip1%5C01%5Cclip_colorschememapping.xml"> <!--[if gte mso 9]><xml> <w:WordDocument> <w:View>Normal</w:View> <w:Zoom>0</w:Zoom> <w:TrackMoves/> <w:TrackFormatting/> <w:PunctuationKerning/> <w:DrawingGridVerticalSpacing>7.8 磅</w:DrawingGridVerticalSpacing> <w:DisplayHorizontalDrawingGridEvery>0</w:DisplayHorizontalDrawingGridEvery> <w:DisplayVerticalDrawingGridEvery>2</w:DisplayVerticalDrawingGridEvery> <w:ValidateAgainstSchemas/> <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid> <w:IgnoreMixedContent>false</w:IgnoreMixedContent> <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText> <w:DoNotPromoteQF/> <w:LidThemeOther>EN-US</w:LidThemeOther> <w:LidThemeAsian>ZH-CN</w:LidThemeAsian> <w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript> <w:Compatibility> <w:SpaceForUL/> <w:BalanceSingleByteDoubleByteWidth/> <w:DoNotLeaveBackslashAlone/> <w:ULTrailSpace/> <w:DoNotExpandShiftReturn/> <w:AdjustLineHeightInTable/> <w:BreakWrappedTables/> <w:SnapToGridInCell/> <w:WrapTextWithPunct/> <w:UseAsianBreakRules/> <w:DontGrowAutofit/> <w:SplitPgBreakAndParaMark/> <w:DontVertAlignCellWithSp/> <w:DontBreakConstrainedForcedTables/> <w:DontVertAlignInTxbx/> <w:Word11KerningPairs/> <w:CachedColBalance/> <w:UseFELayout/> </w:Compatibility> <w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel> <m:mathPr> <m:mathFont m:val="Cambria Math"/> <m:brkBin m:val="before"/> <m:brkBinSub m:val="--><smallfrac m:val="off"><dispdef><lmargin m:val="0"><rmargin m:val="0"><defjc m:val="centerGroup"><wrapindent m:val="1440"><intlim m:val="subSup"><narylim m:val="undOvr"></narylim></intlim></wrapindent><!--[endif]--><!--[if gte mso 9]><xml> <w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true" DefSemiHidden="true" DefQFormat="false" DefPriority="99" LatentStyleCount="267"> <w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Normal"/> <w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="heading 1"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9"/> <w:LsdException Locked="false" Priority="39" Name="toc 1"/> <w:LsdException Locked="false" Priority="39" Name="toc 2"/> <w:LsdException Locked="false" Priority="39" Name="toc 3"/> <w:LsdException Locked="false" Priority="39" Name="toc 4"/> <w:LsdException Locked="false" Priority="39" Name="toc 5"/> <w:LsdException Locked="false" Priority="39" Name="toc 6"/> <w:LsdException Locked="false" Priority="39" Name="toc 7"/> <w:LsdException Locked="false" Priority="39" Name="toc 8"/> <w:LsdException Locked="false" Priority="39" Name="toc 9"/> <w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption"/> <w:LsdException Locked="false" Priority="10" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Title"/> <w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font"/> <w:LsdException Locked="false" Priority="11" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Subtitle"/> <w:LsdException Locked="false" Priority="0" Name="Hyperlink"/> <w:LsdException Locked="false" Priority="22" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Strong"/> <w:LsdException Locked="false" Priority="20" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Emphasis"/> <w:LsdException Locked="false" Priority="59" SemiHidden="false" UnhideWhenUsed="false" Name="Table Grid"/> <w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text"/> <w:LsdException Locked="false" Priority="1" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="No Spacing"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading Accent 1"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List Accent 1"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid Accent 1"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1 Accent 1"/> <w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision"/> <w:LsdException Locked="false" Priority="34" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="List Paragraph"/> <w:LsdException Locked="false" Priority="29" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Quote"/> <w:LsdException Locked="false" Priority="30" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Intense Quote"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2 Accent 1"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List Accent 1"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading Accent 1"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List Accent 1"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid Accent 1"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading Accent 2"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List Accent 2"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid Accent 2"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1 Accent 2"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2 Accent 2"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List Accent 2"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading Accent 2"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List Accent 2"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid Accent 2"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading Accent 3"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List Accent 3"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid Accent 3"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1 Accent 3"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2 Accent 3"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List Accent 3"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading Accent 3"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List Accent 3"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid Accent 3"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading Accent 4"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List Accent 4"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid Accent 4"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1 Accent 4"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2 Accent 4"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List Accent 4"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading Accent 4"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List Accent 4"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid Accent 4"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading Accent 5"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List Accent 5"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid Accent 5"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1 Accent 5"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2 Accent 5"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List Accent 5"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading Accent 5"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List Accent 5"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid Accent 5"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading Accent 6"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List Accent 6"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid Accent 6"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1 Accent 6"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2 Accent 6"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List Accent 6"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading Accent 6"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List Accent 6"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid Accent 6"/> <w:LsdException Locked="false" Priority="19" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis"/> <w:LsdException Locked="false" Priority="21" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis"/> <w:LsdException Locked="false" Priority="31" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference"/> <w:LsdException Locked="false" Priority="32" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Intense Reference"/> <w:LsdException Locked="false" Priority="33" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Book Title"/> <w:LsdException Locked="false" Priority="37" Name="Bibliography"/> <w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading"/> </w:LatentStyles> </xml><![endif]--><style> <!-- /* Font Definitions */ @font-face {font-family:Courier; panose-1:2 7 4 9 2 2 5 2 4 4; mso-font-alt:"Courier New"; mso-font-charset:0; mso-generic-font-family:modern; mso-font-format:other; mso-font-pitch:fixed; mso-font-signature:3 0 0 0 1 0;} @font-face {font-family:Wingdings; panose-1:5 0 0 0 0 0 0 0 0 0; mso-font-charset:2; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:0 268435456 0 0 -2147483648 0;} @font-face {font-family:宋体; panose-1:2 1 6 0 3 1 1 1 1 1; mso-font-alt:SimSun; mso-font-charset:134; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:3 680460288 22 0 262145 0;} @font-face {font-family:"Cambria Math"; panose-1:2 4 5 3 5 4 6 3 2 4; mso-font-charset:0; mso-generic-font-family:roman; mso-font-pitch:variable; mso-font-signature:-1610611985 1107304683 0 0 159 0;} @font-face {font-family:NewBaskervilleITCbyBT-Italic; panose-1:0 0 0 0 0 0 0 0 0 0; mso-font-alt:Arial; mso-font-charset:0; mso-generic-font-family:swiss; mso-font-format:other; mso-font-pitch:auto; mso-font-signature:3 0 0 0 1 0;} @font-face {font-family:"/@宋体"; panose-1:2 1 6 0 3 1 1 1 1 1; mso-font-charset:134; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:3 680460288 22 0 262145 0;} @font-face {font-family:NewBaskervilleITCbyBT-Roman; panose-1:0 0 0 0 0 0 0 0 0 0; mso-font-alt:"Times New Roman"; mso-font-charset:0; mso-generic-font-family:roman; mso-font-format:other; mso-font-pitch:auto; mso-font-signature:3 0 0 0 1 0;} @font-face {font-family:楷体_GB2312; mso-font-alt:"Arial Unicode MS"; mso-font-charset:134; mso-generic-font-family:modern; mso-font-pitch:fixed; mso-font-signature:0 135135232 16 0 262144 0;} @font-face {font-family:汉仪中黑简; mso-font-alt:"Arial Unicode MS"; mso-font-charset:134; mso-generic-font-family:modern; mso-font-pitch:fixed; mso-font-signature:0 135137280 18 0 262144 0;} @font-face {font-family:"/@汉仪中黑简"; mso-font-charset:134; mso-generic-font-family:modern; mso-font-pitch:fixed; mso-font-signature:0 135137280 18 0 262144 0;} @font-face {font-family:"/@楷体_GB2312"; mso-font-charset:134; mso-generic-font-family:modern; mso-font-pitch:fixed; mso-font-signature:0 135135232 16 0 262144 0;} /* Style Definitions */ p.MsoNormal, li.MsoNormal, div.MsoNormal {mso-style-unhide:no; mso-style-qformat:yes; mso-style-parent:""; margin:0cm; margin-bottom:.0001pt; text-align:justify; text-justify:inter-ideograph; text-indent:10.0pt; mso-char-indent-count:2.0; mso-pagination:none; mso-layout-grid-align:none; punctuation-trim:leading; text-autospace:none; font-size:10.0pt; mso-bidi-font-size:12.0pt; font-family:"Times New Roman","serif"; mso-fareast-font-family:宋体; mso-font-kerning:10.0pt;} h1 {mso-style-unhide:no; mso-style-qformat:yes; mso-style-link:"标题 1 Char"; mso-style-next:正文; margin-top:6.0pt; margin-right:0cm; margin-bottom:6.0pt; margin-left:0cm; text-align:justify; text-justify:inter-ideograph; text-indent:0cm; line-height:240%; mso-pagination:lines-together; page-break-after:avoid; mso-outline-level:1; mso-list:l0 level1 lfo2; text-autospace:none; font-size:16.0pt; mso-bidi-font-size:22.0pt; font-family:"Times New Roman","serif"; mso-font-kerning:0pt;} a:link, span.MsoHyperlink {mso-style-noshow:yes; mso-style-unhide:no; color:blue; text-decoration:underline; text-underline:single;} a:visited, span.MsoHyperlinkFollowed {mso-style-noshow:yes; mso-style-priority:99; color:purple; mso-themecolor:followedhyperlink; text-decoration:underline; text-underline:single;} span.1Char {mso-style-name:"标题 1 Char"; mso-style-unhide:no; mso-style-locked:yes; mso-style-link:"标题 1"; mso-ansi-font-size:16.0pt; mso-bidi-font-size:22.0pt; font-weight:bold;} p.11, li.11, div.11 {mso-style-name:"1/.1"; mso-style-unhide:no; mso-style-parent:""; margin-top:2.0pt; margin-right:0cm; margin-bottom:2.0pt; margin-left:0cm; mso-para-margin-top:.4gd; mso-para-margin-right:0cm; mso-para-margin-bottom:.4gd; mso-para-margin-left:0cm; mso-pagination:widow-orphan; page-break-after:avoid; mso-outline-level:2; layout-grid-mode:char; mso-layout-grid-align:none; punctuation-trim:leading; font-size:14.0pt; font-family:"Arial","sans-serif"; mso-fareast-font-family:汉仪中黑简; mso-bidi-font-family:"Times New Roman"; mso-bidi-font-weight:bold;} p.a, li.a, div.a {mso-style-name:圆点; mso-style-unhide:no; margin-top:0cm; margin-right:0cm; margin-bottom:0cm; margin-left:32.35pt; margin-bottom:.0001pt; text-align:justify; text-justify:inter-ideograph; text-indent:-11.35pt; mso-pagination:none; mso-list:l1 level1 lfo1; tab-stops:32.5pt list 42.0pt; mso-layout-grid-align:none; punctuation-trim:leading; text-autospace:none; font-size:10.0pt; mso-bidi-font-size:12.0pt; font-family:"Times New Roman","serif"; mso-fareast-font-family:宋体; mso-font-kerning:10.0pt;} .MsoChpDefault {mso-style-type:export-only; mso-default-props:yes; font-size:10.0pt; mso-ansi-font-size:10.0pt; mso-bidi-font-size:10.0pt; mso-ascii-font-family:"Times New Roman"; mso-fareast-font-family:宋体; mso-hansi-font-family:"Times New Roman"; mso-font-kerning:0pt;} /* Page Definitions */ @page {mso-page-border-surround-header:no; mso-page-border-surround-footer:no;} @page Section1 {size:612.0pt 792.0pt; margin:72.0pt 90.0pt 72.0pt 90.0pt; mso-header-margin:36.0pt; mso-footer-margin:36.0pt; mso-paper-source:0;} div.Section1 {page:Section1;} /* List Definitions */ @list l0 {mso-list-id:115605943; mso-list-template-ids:-1407131002;} @list l0:level1 {mso-level-style-link:"标题 1"; mso-level-suffix:none; mso-level-text:第%1章 ; mso-level-tab-stop:none; mso-level-number-position:left; margin-left:0cm; text-indent:0cm; mso-ansi-language:EN-US;} @list l0:level2 {mso-level-suffix:none; mso-level-text:"%1/.%2 "; mso-level-tab-stop:none; mso-level-number-position:left; margin-left:0cm; text-indent:0cm;} @list l0:level3 {mso-level-suffix:none; mso-level-text:"%1/.%2/.%3 "; mso-level-tab-stop:none; mso-level-number-position:left; margin-left:0cm; text-indent:0cm;} @list l0:level4 {mso-level-number-format:none; mso-level-suffix:none; mso-level-text:""; mso-level-tab-stop:none; mso-level-number-position:left; margin-left:0cm; text-indent:0cm;} @list l0:level5 {mso-level-number-format:none; mso-level-suffix:none; mso-level-text:""; mso-level-tab-stop:none; mso-level-number-position:left; margin-left:0cm; text-indent:0cm;} @list l0:level6 {mso-level-number-format:none; mso-level-suffix:none; mso-level-text:""; mso-level-tab-stop:none; mso-level-number-position:left; margin-left:0cm; text-indent:0cm;} @list l0:level7 {mso-level-number-format:none; mso-level-suffix:none; mso-level-text:""; mso-level-tab-stop:none; mso-level-number-position:left; margin-left:0cm; text-indent:0cm;} @list l0:level8 {mso-level-number-format:none; mso-level-suffix:none; mso-level-text:""; mso-level-tab-stop:none; mso-level-number-position:left; margin-left:0cm; text-indent:0cm;} @list l0:level9 {mso-level-number-format:none; mso-level-suffix:none; mso-level-text:""; mso-level-tab-stop:none; mso-level-number-position:left; margin-left:0cm; text-indent:0cm;} @list l1 {mso-list-id:1966346652; mso-list-type:hybrid; mso-list-template-ids:602017116 -314254866 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693; mso-list-name:"RTF_Num 1622222222";} @list l1:level1 {mso-level-number-format:bullet; mso-level-style-link:圆点; mso-level-text:; mso-level-tab-stop:42.0pt; mso-level-number-position:left; margin-left:42.0pt; text-indent:-21.0pt; mso-ansi-font-size:7.5pt; font-family:Wingdings;} ol {margin-bottom:0cm;} ul {margin-bottom:0cm;} --> </style> <!--[if gte mso 10]> <style> /* Style Definitions */ table.MsoNormalTable {mso-style-name:普通表格; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-priority:99; mso-style-qformat:yes; mso-style-parent:""; mso-padding-alt:0cm 5.4pt 0cm 5.4pt; mso-para-margin:0cm; mso-para-margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:10.0pt; font-family:"Times New Roman","serif";} </style> <![endif]--><h1 style="text-align: center;" align="center"> <span style="font-family: 宋体;">《</span><span lang="EN-US">Ajax</span><span style="font-family: 宋体;">实战》三部曲之“王者归来”</span> </h1> <h1 style="text-align: right;" align="right"> <span style="font-size: 14pt; line-height: 240%; font-family: 宋体;">——《</span><span style="font-size: 14pt; line-height: 240%;" lang="EN-US">Ajax</span><span style="font-size: 14pt; line-height: 240%; font-family: 宋体;">实战:实例详解》</span><span style="font-size: 14pt; line-height: 240%;" lang="EN-US"><p></p></span> </h1> <p class="MsoNormal" style="text-indent: 20.4pt;"><span class="title"></span><a href="http://blog.youkuaiyun.com/turingbooks/archive/2008/10/29/3175945.aspx" target="_blank">推荐阅读:Ajax 2.0时代的王者 <br></a></p> <p class="MsoNormal" style="text-indent: 20.4pt;"><a href="http://blog.youkuaiyun.com/turingbooks/archive/2008/10/29/3175945.aspx" target="_blank"><br></a></p> <p class="MsoNormal" style="text-indent: 20.4pt;"><span style="letter-spacing: 0.1pt;" lang="EN-US">Web</span><span style="font-family: 宋体; letter-spacing: 0.1pt;">始终都是催生创新的温床,在它不长的历史里,以某项创造为基础进行重造和重用,以致在某些方面远远超出原始发明者意图的例子比比皆是。例如,</span><span style="letter-spacing: 0.1pt;" lang="EN-US">CGI</span><span style="font-family: 宋体; letter-spacing: 0.1pt;">取代了一种基于网络的文档检索协议,同时又提供了从后台数据库中取得数据并(根据实时请求)动态生成文档的能力;</span><span style="letter-spacing: 0.1pt;" lang="EN-US">HTTP</span><span style="font-family: 宋体; letter-spacing: 0.1pt;">首部被用来在无状态协议之上提供持续的用户会话,这使预订系统和电子商务等有状态应用成为可能;在核心协议上创建的加密层,给那些网上商店的顾客和业务应用的用户以信心。</span><span style="font-size: 12pt; font-family: 宋体; color: black; letter-spacing: 0.1pt;"><p></p></span></p> <p class="MsoNormal" style="text-indent: 20pt;"><span style="font-family: 宋体;">这些突破性的技术永久地改变了人们使用</span><span style="" lang="EN-US">Web</span><span style="font-family: 宋体;">的方式。时至今日,诸如服务器端页面、用户会话以及</span><span style="" lang="EN-US">SSL</span><span style="font-family: 宋体;">等技术只是构建</span><span style="" lang="EN-US">Web</span><span style="font-family: 宋体;">应用的日常构件,并成为所有</span><span style="" lang="EN-US">Web</span><span style="font-family: 宋体;">开发人员工具箱里的必备,<span style="letter-spacing: -0.1pt;">以至于我们认为这是理所当然的。然而,</span></span><span style="letter-spacing: -0.1pt;" lang="EN-US">Web</span><span style="font-family: 宋体; letter-spacing: -0.1pt;">创新的步伐仍然没有停止,几乎每周都会有新的</span><span style="letter-spacing: -0.1pt;" lang="EN-US">Web</span><span style="font-family: 宋体;">框架出现。</span><span style="" lang="EN-US"><p></p></span></p> <p class="MsoNormal" style="text-indent: 20pt;"><span style="" lang="EN-US">Ajax</span><span style="font-family: 宋体;">是近年来</span><span style="" lang="EN-US">Web</span><span style="font-family: 宋体;">开发领域最大的突破性技术之一。先前的所有创新对</span><span style="" lang="EN-US">Web</span><span style="font-family: 宋体;">用户界面(点击、发送请求、响应、重绘页面)的基本模式没有多大影响,直到</span><span style="" lang="EN-US">XMLHttpRequest</span><span style="font-family: 宋体;">(</span><span style="" lang="EN-US">XHR</span><span style="font-family: 宋体;">)对象</span><span style="" lang="EN-US">1999</span><span style="font-family: 宋体;">年悄然出现在</span><span style="" lang="EN-US">IE 5</span><span style="font-family: 宋体;">中时,这一状况才结束。该对象的使用最初是为了增强</span><span style="" lang="EN-US">Outlook Web Access</span><span style="font-family: 宋体;">客户端程序,并未引起太大的关注。</span><span style="" lang="EN-US"><p></p></span></p> <p class="MsoNormal" style="text-indent: 20pt;"><span style="" lang="EN-US">2005</span><span style="font-family: 宋体;">年,当</span><span style="" lang="EN-US">Google</span><span style="font-family: 宋体;">举起</span><span style="" lang="EN-US">Ajax</span><span style="font-family: 宋体;">的旗帜开发邮件(</span><span style="" lang="EN-US">Gmail</span><span style="font-family: 宋体;">)、地图和</span><span style="" lang="EN-US">Suggest</span><span style="font-family: 宋体;">等应用时,人们才开始猛然醒悟,关注起</span><span style="" lang="EN-US">Ajax</span><span style="font-family: 宋体;">来。来自</span><span style="" lang="EN-US">Adaptive Path</span><span style="font-family: 宋体;">公司的</span><span style="" lang="EN-US">Jesse James Garrett</span><span style="font-family: 宋体;">提出了“</span><span style="" lang="EN-US">Ajax</span><span style="font-family: 宋体;">”这一术语,树起一面大旗,人们云集旗下讨论</span><span style="" lang="EN-US">Ajax</span><span style="font-family: 宋体;">究竟是什么,可以用它做什么。</span><span style="" lang="EN-US"><p></p></span></p> <p class="MsoNormal" style="text-indent: 20pt;"><span style="" lang="EN-US">Ajax</span><span style="font-family: 宋体;">好像只是在等待一个名字,一旦有了,一系列令人兴奋的活动接踵而至,而人们也开始研究</span><span style="" lang="EN-US">Ajax</span><span style="font-family: 宋体;">的技术本质。</span><span style="" lang="EN-US">Ajax</span><span style="font-family: 宋体;">引入了一种创建</span><span style="" lang="EN-US">Web</span><span style="font-family: 宋体;">应用的全新的方式。尽管这也导致有许多新的问题亟待解决,但随着</span><span style="" lang="EN-US">Web</span><span style="font-family: 宋体;">开发社区不断突破新的极限,过去两年爆发了新一轮创新热潮。</span><span style="" lang="EN-US"><p></p></span></p> <p class="MsoNormal" style="text-indent: 20pt;"><span style="font-family: 宋体;">沿着这种发展路线,</span><span style="" lang="EN-US">Ajax</span><span style="font-family: 宋体;">的基础(例如</span><span style="" lang="EN-US">XMLHttpRequest</span><span style="font-family: 宋体;">对象)将重复服务器端页面、用户会话以及</span><span style="" lang="EN-US">SSL</span><span style="font-family: 宋体;">的道路。处于集体无意识的</span><span style="" lang="EN-US">Web</span><span style="font-family: 宋体;">开发社区犹如神助,一下子明白了</span><span style="" lang="EN-US">Ajax</span><span style="font-family: 宋体;">技术的根本,并转向如何解决使用中产生的更广泛的问题。 </span><span style="" lang="EN-US"><p></p></span></p> <p class="MsoNormal" style="text-indent: 20pt;"><span style="font-family: 宋体;"> <img alt="" src="http://album.hi.youkuaiyun.com/app_uploads/turingbooks/20081029/151130245.p.jpg?d=20081029153716542" align=""><br></span></p> <p class="MsoNormal" style="text-indent: 20pt;"><span style="font-family: 宋体;">详细信息:</span><span lang="EN-US"><a href="http://www.china-pub.com/209252">http://www.china-pub.com/209252</a></span><span style="" lang="EN-US"><p></p></span></p> <p class="MsoNormal" style="text-indent: 20pt;"><span style="font-family: 宋体;">为解决这些问题,我们决定撰写本书。我们希望本书能帮助熟练的和不那么熟练的</span><span style="" lang="EN-US">Web</span><span style="font-family: 宋体;">开发者完全掌握</span><span style="" lang="EN-US">Ajax</span><span style="font-family: 宋体;">技术并成功创建其自己的</span><span style="" lang="EN-US">Ajax</span><span style="font-family: 宋体;">应用。它可以看作是第二代</span><span style="" lang="EN-US">Ajax</span><span style="font-family: 宋体;">图书:第一代</span><span style="" lang="EN-US">Ajax</span><span style="font-family: 宋体;">图书介绍</span><span style="" lang="EN-US">Ajax</span><span style="font-family: 宋体;">是什么,而第二代</span><span style="" lang="EN-US">Ajax</span><span style="font-family: 宋体;">图书介绍可以用它做什么以及如何做。</span><span style="" lang="EN-US"><p></p></span></p> <p class="MsoNormal" style="text-indent: 20pt;"><span style="font-family: 宋体;">本书从</span><span style="" lang="EN-US">Manning</span><span style="font-family: 宋体;">出版社联系</span><span style="" lang="EN-US">Steve Benfield</span><span style="font-family: 宋体;">并希望他成为第二代</span><span style="" lang="EN-US">Ajax</span><span style="font-family: 宋体;">图书的主编开始启动,可以看作是</span><span style="" lang="EN-US">Dave Crane</span><span style="font-family: 宋体;">所著畅销书《</span><span style="" lang="EN-US">Ajax</span><span style="font-family: 宋体;">实战》的后续之作。后来,</span><span style="" lang="EN-US">Steve</span><span style="font-family: 宋体;">因故不再担任主编,于是</span><span style="" lang="EN-US">Jord Sonneveld</span><span style="font-family: 宋体;">、</span><span style="" lang="EN-US">Bear Bibeault</span><span style="font-family: 宋体;">和</span><span style="" lang="EN-US">Dave Crane</span><span style="font-family: 宋体;">携手为你奉献了本书。</span><span style="" lang="EN-US"><p></p></span></p> <p class="MsoNormal" style="text-indent: 20pt;"><span style="font-family: 宋体;">当你看完前言,我们就完成了自己的任务,因此可以坐下来分享几杯早该享用的饮料。我们希望你在阅读本书时能获得和我们写作本书时一样多的乐趣!</span><span style="" lang="EN-US"><p></p></span></p> <p class="11" style="margin: 4.8pt 0cm;"><span style="font-family: 汉仪中黑简;">关于本书</span></p> <p class="MsoNormal" style="text-indent: 20pt;"><span style="" lang="EN-US">Ajax</span><span style="font-family: 宋体;">席卷了</span><span style="" lang="EN-US">Web</span><span style="font-family: 宋体;">开发社区,它使</span><span style="" lang="EN-US">Web</span><span style="font-family: 宋体;">开发人员得以创建以客户为中心的富因特网应用。不过它也给这些应用带来了新的复杂性和多样性。本书</span><span style="font-family: 宋体;">抓住</span><span style="" lang="EN-US">Ajax</span><span style="font-family: 宋体;">的</span><span style="font-family: 宋体;">核心内容,提供了大量实践性技巧和可重用的代码,以帮助开发者解决创建</span><span style="" lang="EN-US">Ajax</span><span style="font-family: 宋体;">解决方案时遇到的具体问题。</span><span style="" lang="EN-US"><p></p></span></p> <p class="MsoNormal" style="text-indent: 20pt;"><span style="font-family: 宋体;">简要介绍</span><span style="" lang="EN-US">Ajax</span><span style="font-family: 宋体;">之后,本书将带领读者领略几十个易于使用的、以解决方案为重点的示例。读者可以学会如何实现富客户端用户界面,包括拖拽</span><span style="font-family: 宋体;">实践性策略</span><span style="font-family: 宋体;">、有效导航、事件处理、表单项验证、状态管理、如何选择</span><span style="" lang="EN-US">Ajax</span><span style="font-family: 宋体;">库、访问第三方的开放</span><span style="" lang="EN-US">WebAPI</span><span style="font-family: 宋体;">等实用策略。</span><span style="" lang="EN-US"><p></p></span></p> <p class="MsoNormal" style="text-indent: 20pt;"><span style="font-family: 宋体;">与传统的“</span><span style="" lang="EN-US">cookbook</span><span style="font-family: 宋体;">”类图书不同,本书提供对各个技巧的深入讨论并演示如何将这些独立的组件连接起来,以创建强大的应用解决方案。本书结尾一章是令人愉快的“混搭</span><span style="font-family: 宋体;" lang="EN-US">(</span><span style="" lang="EN-US">mashup</span><span style="font-family: 宋体;" lang="EN-US">)</span><span style="font-family: 宋体;">”,之所以选择该示例,是因为它有趣、好玩,更重要的是它很实用。</span><span style="" lang="EN-US"><p></p></span></p> <p class="MsoNormal" style="text-indent: 20pt;"><span style="font-family: 宋体;">本书将帮助你:</span><span style="" lang="EN-US"><p></p></span></p> <p class="a"><!--[if !supportLists]--><span style="font-size: 7.5pt; font-family: Wingdings;" lang="EN-US"><span style="">q<span style='font-family: "Times New Roman"; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;'> </span></span></span><!--[endif]--><span style="font-family: 宋体;">超越</span><span style="" lang="EN-US">Ajax</span><span style="font-family: 宋体;">本身并学习如何让</span><span style="" lang="EN-US">Ajax</span><span style="font-family: 宋体;">运行起来;</span><span style="" lang="EN-US"><p></p></span></p> <p class="a"><!--[if !supportLists]--><span style="font-size: 7.5pt; font-family: Wingdings;" lang="EN-US"><span style="">q<span style='font-family: "Times New Roman"; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;'> </span></span></span><!--[endif]--><span style="font-family: 宋体;">掌握许多用户界面设计和站点导航的技巧;</span><span style="" lang="EN-US"><p></p></span></p> <p class="a"><!--[if !supportLists]--><span style="font-size: 7.5pt; font-family: Wingdings;" lang="EN-US"><span style="">q<span style='font-family: "Times New Roman"; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;'> </span></span></span><!--[endif]--><span style="font-family: 宋体;">动手实践专业级的可重用的</span><span style="" lang="EN-US">Ajax</span><span style="font-family: 宋体;">代码以解决实际问题。</span><span style="" lang="EN-US"><p></p></span></p> <p class="11" style="margin: 4.8pt 0cm;"><span style="font-family: 汉仪中黑简;">读者对象</span></p> <p class="MsoNormal" style="text-indent: 20pt;"><span style="font-family: 宋体;">本书针对那些希望借助</span><span style="" lang="EN-US">Ajax</span><span style="font-family: 宋体;">技术创建最佳富用户界面应用的</span><span style="" lang="EN-US">Web</span><span style="font-family: 宋体;">开发人员。</span><span style="" lang="EN-US"><p></p></span></p> <p class="MsoNormal" style="text-indent: 20pt;"><span style="" lang="EN-US">Ajax</span><span style="font-family: 宋体;">初学者会发现入门的前两章对快速了解异步请求的知识有帮助,但本书面向的主要读者是开发人员,他们应当至少有基本的</span><span style="" lang="EN-US">Web</span><span style="font-family: 宋体;">应用开发背景并能使用基础的</span><span style="" lang="EN-US">JavaScript</span><span style="font-family: 宋体;">语法实现一些客户端特效。</span><span style="" lang="EN-US"><p></p></span></p> <p class="MsoNormal" style="text-indent: 20pt;"><span style="font-family: 宋体;">在前所未有的富客户端用户界面应用里,客户端代码数量迅速增多,因此这部分代码应和服务端代码同样得到重视。本书介绍了一些高级的</span><span style="" lang="EN-US">JavaScript</span><span style="font-family: 宋体;">技巧帮助你组织客户端代码并有效使用</span><span style="" lang="EN-US">Ajax</span><span style="font-family: 宋体;">。</span><span style="" lang="EN-US"><p></p></span></p> <p class="MsoNormal" style="text-indent: 20pt;"><span style="font-family: 宋体;">如果你不仅对使用新技术扩展自身编码能力感兴趣,同时也关注如何应用编程技巧和模式来最好地利用这些技术,我们认为本书能满足你的这些需求。</span><span style="" lang="EN-US"><p></p></span></p> <p class="MsoNormal" style="text-indent: 20pt;"><span style="font-family: 宋体;">无论你是老练的客户端开发人员,还是刚开始创建拥有富用户界面的新手,我们都希望本书对你能有所帮助。</span><span style='font-family: "NewBaskervilleITCbyBT-Roman","serif";' lang="EN-US"><p></p></span></p> <p class="11" style="margin: 4.8pt 0cm;"><span style="font-family: 汉仪中黑简;">阅读路线图</span></p> <p class="MsoNormal" style="text-indent: 20pt;"><span style="font-family: 宋体;">本书分为两部分。第一部分:“</span><span style="" lang="EN-US">Ajax</span><span style="font-family: 宋体;">基础”,包含</span><span style="" lang="EN-US">4</span><span style="font-family: 宋体;">章导读性的内容,以确保你在学习本书第二部分时已经消化掌握了这些技巧。第二部分“</span><span style="" lang="EN-US">Ajax</span><span style="font-family: 宋体;">最佳实践”,每章都讲解了客户端编程的各种实践性主题。它们或强调直接使用</span><span style="" lang="EN-US">Ajax</span><span style="font-family: 宋体;">,或强调在支持</span><span style="" lang="EN-US">Ajax</span><span style="font-family: 宋体;">的应用中运行良好的实践和原则。</span><span style="" lang="EN-US"><p></p></span></p> <p class="MsoNormal" style="text-indent: 20pt;"><span style="font-family: 宋体;">第</span><span style="" lang="EN-US">1</span><span style="font-family: 宋体;">章深入探讨</span><span style="" lang="EN-US">Ajax</span><span style="font-family: 宋体;">与其他技术的区别,并介绍为何有如此多的内容需要学习。本章提供了一个快速教程介绍如何跨浏览器使用</span><span style="" lang="EN-US">Ajax</span><span style="font-family: 宋体;">以及如何处理到来的响应。最后介绍</span><span style="" lang="EN-US">Prototype</span><span style="font-family: 宋体;">库如何确保整个过程更加流畅。</span><span style="" lang="EN-US"><p></p></span></p> <p class="MsoNormal" style="text-indent: 20pt;"><span style="font-family: 宋体;">第</span><span style="" lang="EN-US">2</span><span style="font-family: 宋体;">章讨论了</span><span style="" lang="EN-US">Ajax</span><span style="font-family: 宋体;">通信的各种方式,包括</span><span style="" lang="EN-US">JSON</span><span style="font-family: 宋体;">、</span><span style="" lang="EN-US">XML</span><span style="font-family: 宋体;">和</span><span style="" lang="EN-US">XSLT</span><span style="font-family: 宋体;">。我们还研究了</span><span style="" lang="EN-US">Ajax</span><span style="font-family: 宋体;">与</span><span style="" lang="EN-US">SOAP Web </span><span style="font-family: 宋体;">服务的结合使用。</span><span style="" lang="EN-US"><p></p></span></p> <p class="MsoNormal" style="text-indent: 20pt;"><span style="font-family: 宋体;">第</span><span style="" lang="EN-US">3</span><span style="font-family: 宋体;">章介绍了怎样使用面向对象的</span><span style="" lang="EN-US">JavaScript</span><span style="font-family: 宋体;">来控制典型的</span><span style="" lang="EN-US">Ajax</span><span style="font-family: 宋体;">应用都具备的客户端源代码增长问题。我们介绍的主要概念有对象构造、函数是一等对象、函数是类方法、函数上下文以及闭包等,并在面向对象技术的背景下加以介绍。最后介绍了如何使用</span><span style="" lang="EN-US">Prototype</span><span style="font-family: 宋体;">库帮助我们轻松定义</span><span style="" lang="EN-US">JavaScript</span><span style="font-family: 宋体;">类。</span><span style="" lang="EN-US"><p></p></span></p> <p class="MsoNormal" style="text-indent: 20pt;"><span style="font-family: 宋体;">第</span><span style="" lang="EN-US">4</span><span style="font-family: 宋体;">章继续讨论支持</span><span style="" lang="EN-US">Ajax</span><span style="font-family: 宋体;">的</span><span style="" lang="EN-US">JavaScript</span><span style="font-family: 宋体;">库并进一步讲解</span><span style="" lang="EN-US">Prototype</span><span style="font-family: 宋体;">、</span><span style="" lang="EN-US">Dojo</span><span style="font-family: 宋体;">工具箱</span><span style="font-family: 宋体;">、</span><span style="" lang="EN-US">jQuery</span><span style="font-family: 宋体;">和</span><span style="" lang="EN-US">DWR</span><span style="font-family: 宋体;">库</span><span style="font-family: 宋体;">,虽然不可能完全地介绍这些库具备的各种特性,但我们特别介绍了它们给</span><span style="" lang="EN-US">Ajax</span><span style="font-family: 宋体;">带来的变化。我们还会在接下来的章节的多个代码示例中看到这些库的实践用法。</span><span style="" lang="EN-US"><p></p></span></p> <p class="MsoNormal" style="text-indent: 20pt;"><span style="font-family: 宋体;">第</span><span style="" lang="EN-US">5</span><span style="font-family: 宋体;">章讲解事件处理,介绍了多种事件模型并特别强调了跨浏览器问题,并介绍了使用</span><span style="" lang="EN-US">Prototype</span><span style="font-family: 宋体;">库以减轻跨浏览器带来的痛苦。还讨论了</span><span style="" lang="EN-US">Ajax</span><span style="font-family: 宋体;">应用程序中最常用的事件类型。</span><span style="" lang="EN-US"><p></p></span></p> <p class="MsoNormal" style="text-indent: 20pt;"><span style="font-family: 宋体;">第</span><span style="" lang="EN-US">6</span><span style="font-family: 宋体;">章详细研究了表单数据项验证及其与上一章介绍的事件处理的联系。本章示例采用</span><span style="" lang="EN-US">Prototype</span><span style="font-family: 宋体;">和</span><span style="" lang="EN-US">jQuery</span><span style="font-family: 宋体;">库以获得最大好处。这些示例演示了如何截取表单提交(以前通常会引起整个页面刷新的操作)并把它重定向为不甚唐突的</span><span style="" lang="EN-US">Ajax</span><span style="font-family: 宋体;">请求。</span><span style="" lang="EN-US"><p></p></span></p> <p class="MsoNormal" style="text-indent: 20pt;"><span style="font-family: 宋体;">第</span><span style="" lang="EN-US">7</span><span style="font-family: 宋体;">章讨论内容导航。讲解了创建简单的菜单,然后进入更加复杂的导航辅助设施如树视图、</span><span style="" lang="EN-US">accordion</span><span style="font-family: 宋体;">控件、</span><span style="" lang="EN-US">Tab</span><span style="font-family: 宋体;">视图和工具条等内容。我们还在本章给出了支持这些功能的</span><span style="" lang="EN-US">OpenRico</span><span style="font-family: 宋体;">库</span><span style="font-family: 宋体;">和</span><span style="" lang="EN-US">qooxdoo</span><span style="font-family: 宋体;">库的相关代码。</span><span style="" lang="EN-US"><p></p></span></p> <p class="MsoNormal" style="text-indent: 20pt;"><span style="font-family: 宋体;">第</span><span style="" lang="EN-US">8</span><span style="font-family: 宋体;">章关注用户在浏览器中点击后退和刷新按钮导致的问题。我们会从两个角度介绍:如何避免用户出现这些问题以及如何支持后退和刷新操作。本章还会介绍如何为应用程序添加一个简单的撤销功能。</span><span style="" lang="EN-US"><p></p></span></p> <p class="MsoNormal" style="text-indent: 20pt;"><span style="font-family: 宋体;">第</span><span style="" lang="EN-US">9</span><span style="font-family: 宋体;">章讨论拖放。我们将研究拖放操作的原理并讨论支持拖放的</span><span style="" lang="EN-US">JavaScript</span><span style="font-family: 宋体;">库。我们会介绍如何使用</span><span style="" lang="EN-US">Scriptaculous</span><span style="font-family: 宋体;">实现支持项目复制的列表,并用</span><span style="" lang="EN-US">Scriptaculous</span><span style="font-family: 宋体;">和</span><span style="" lang="EN-US">ICEfaces</span><span style="font-family: 宋体;">实现一个简单的购物车。</span><span style="" lang="EN-US"><p></p></span></p> <p class="MsoNormal" style="text-indent: 20pt;"><span style="font-family: 宋体;">第</span><span style="" lang="EN-US">10</span><span style="font-family: 宋体;">章讨论关于可用性的考虑,并介绍</span><span style="" lang="EN-US">Ajax</span><span style="font-family: 宋体;">怎样帮助我们解决或至少减轻网络延时的问题。讨论了通过主动提供由服务器端协助完成的帮助减少用户的挫折感,并再次回顾了表单数据验证。我们还解释了在富用户界面中如何处理多控件</span><span style="" lang="EN-US">Tab</span><span style="font-family: 宋体;">键次序以及多层控件次序问题。</span><span style="" lang="EN-US"><p></p></span></p> <p class="MsoNormal" style="text-indent: 20pt;"><span style="font-family: 宋体;">第</span><span style="" lang="EN-US">11</span><span style="font-family: 宋体;">章介绍状态管理。我们将探索如何维护客户状态、缓存数据、预加载数据和如何持久化客户状态。我们还讨论了使用</span><span style="" lang="EN-US">AMASS</span><span style="font-family: 宋体;">库持久化大量数据。</span><span style="" lang="EN-US"><p></p></span></p> <p class="MsoNormal" style="text-indent: 20pt;"><span style="font-family: 宋体;">第</span><span style="" lang="EN-US">12</span><span style="font-family: 宋体;">章探讨第三方开放的</span><span style="" lang="EN-US">API</span><span style="font-family: 宋体;">的用法。我们学习如何避免令人畏惧的</span><span style="font-family: 宋体;">“</span><span style="" lang="EN-US">Ajax</span><span style="font-family: 宋体;">安全沙箱”使</span><span style="" lang="EN-US">Ajax</span><span style="font-family: 宋体;">请求到达远程服务器,然后使用该技巧访问第三方开放的</span><span style="" lang="EN-US">API</span><span style="font-family: 宋体;">,例如</span><span style="" lang="EN-US">Yahoo!Maps</span><span style="font-family: 宋体;">、</span><span style="" lang="EN-US">Geocoding</span><span style="font-family: 宋体;">和</span><span style="" lang="EN-US"> Traffic</span><span style="font-family: 宋体;">、</span><span style="" lang="EN-US">Google</span><span style="font-family: 宋体;">搜索引擎以及</span><span style="" lang="EN-US">Flickr</span><span style="font-family: 宋体;">照片服务等。</span><span style="" lang="EN-US"><p></p></span></p> <p class="MsoNormal" style="text-indent: 20pt;"><span style="font-family: 宋体;">第</span><span style="" lang="EN-US">13</span><span style="font-family: 宋体;">章以一个完整的混搭式应用结束,它使用了上一章介绍的第三方开放</span><span style="" lang="EN-US">API</span><span style="font-family: 宋体;">以及本书介绍的各种技巧来创建一个完整的且可以运行的混搭式应用。</span><span style="" lang="EN-US"><p></p></span></p> <p class="11" style="margin: 4.8pt 0cm;"><span style="font-family: 汉仪中黑简;">代码约定</span></p> <p class="MsoNormal" style="text-indent: 20pt;"><span style="font-family: 宋体;">所有源代码清单或正文中的源代码都使用一种等宽字体(例如</span><span style="font-family: Courier;" lang="EN-US">like this</span><span style="font-family: 宋体;">)以区别于普通文本。正文中的方法和函数名、对象属性、</span><span lang="EN-US">XML</span><span style="font-family: 宋体;">元素都用此类字体显示。</span><span style="font-family: Courier;" lang="EN-US"><p></p></span></p> <p class="MsoNormal" style="text-indent: 20pt;"><span style="font-family: 宋体;">多数情况下,对源代码重新编排了格式。为适应本书的页面宽度,我们增加了换行并调整了缩进。在少数情况下,这样做还不够,源代码清单里还包括续行记号。另外,还从源代码清单中去掉了许多注释。</span><span style="" lang="EN-US"><span style=""> </span><p></p></span></p> <p class="MsoNormal" style="text-indent: 20pt;"><span style="" lang="EN-US"><span style=""> </span></span><span style="font-family: 宋体;">许多源代码清单都伴有代码注解,对重要概念加以说明。在一些情况下,我们加了编号,对应到代码后面的注解文字。</span><span style="" lang="EN-US"><p></p></span></p> <p class="11" style="margin: 4.8pt 0cm;"><span style="font-family: 汉仪中黑简;">代码下载</span></p> <p class="MsoNormal" style="text-indent: 20pt;"><span style="font-family: 宋体;">本书所有示例的源代码都可以从图灵公司网站上本书页面下载下载。也可以从</span><span style='font-family: "NewBaskervilleITCbyBT-Roman","serif";' lang="EN-US">http://www.manning.com/crane2</span><span style="font-family: 宋体;">或</span><span style='font-family: "NewBaskervilleITCbyBT-Roman","serif";' lang="EN-US">http://www.manning.com/AjaxinPractice</span><span style="font-family: 宋体;">下载。</span><span style='font-family: "NewBaskervilleITCbyBT-Roman","serif";' lang="EN-US"><p></p></span></p> <p class="11" style="margin: 4.8pt 0cm;"><span style="font-family: 汉仪中黑简;">作者在线</span></p> <p class="MsoNormal" style="text-indent: 20pt;"><span style="font-family: 宋体;">购买本书也就意味着你可以自由访问一个由</span><span style="" lang="EN-US">Manning</span><span style="font-family: 宋体;">出版社运营的私有网上论坛。你可以在该论坛上对本书发表评论、提一些技术问题并从作者或其他读者那里获得帮助。要访问此论坛并订阅其内容,请访问</span><span style='font-family: "NewBaskervilleITCbyBT-Roman","serif";' lang="EN-US">http://www.manning.com/crane2</span><span style="font-family: 宋体;">或</span><span style='font-family: "NewBaskervilleITCbyBT-Roman","serif";' lang="EN-US">http://www.manning.com/AjaxinPractice</span><span style="font-family: 宋体;">。该网页提供了注册之后如何访问论坛的说明,也介绍了你可以获得什么帮助,并且公布了论坛的规则。</span><span style='font-family: "NewBaskervilleITCbyBT-Roman","serif";' lang="EN-US"><p></p></span></p> <p class="MsoNormal" style="text-indent: 20pt;"><span style='font-family: "NewBaskervilleITCbyBT-Roman","serif";' lang="EN-US">Manning</span><span style="font-family: 宋体;">出版社对读者承诺提供这样一个场所,让读者与读者之间以及读者与作者之间可以进行有意义的对话。但对作者的参与程度并不做承诺,因为作者的参与和贡献完全是自愿的(而且是无偿的)。我们建议你向作者提一些有挑战性的问题,以免作者失去兴趣。</span><span style="" lang="EN-US"><p></p></span></p> <p class="MsoNormal" style="text-indent: 20pt;"><span style="font-family: 宋体;">只要本书不绝版,“作者在线”论坛和以前讨论的存档就可以从出版社的网站上访问。</span><span style="" lang="EN-US"><p></p></span></p> <p class="11" style="margin: 4.8pt 0cm;"><span style="font-family: 汉仪中黑简;">封面图片</span></p> <p class="MsoNormal" style="text-indent: 20pt;"><span style="font-family: 宋体;">本书封面上的插图是一位苏丹女眷,苏丹家族的一位女性成员,苏丹的妻子和母亲可能都叫这个名字。插图来自一本土耳其奥斯曼帝国的服饰画册,由伦敦</span><span style="" lang="EN-US">Old Bond</span><span style="font-family: 宋体;">街的</span><span style="" lang="EN-US">William Miller</span><span style="font-family: 宋体;">于</span><span style="" lang="EN-US">1802</span><span style="font-family: 宋体;">年</span><span style="" lang="EN-US">1</span><span style="font-family: 宋体;">月</span><span style="" lang="EN-US">1</span><span style="font-family: 宋体;">日出版。画册的扉页已经丢失,因此我们很难推断准确的创作时间。此书的目录同时使用英语和法语表示插图,每张图片都有创作它的两位艺术家的名字,他们一定会为其能美化两百年后的一本计算机编程图书的封面而感到惊讶。</span><span style="" lang="EN-US"><p></p></span></p> <p class="MsoNormal" style="text-indent: 20pt;"><span style="" lang="EN-US">Manning</span><span style="font-family: 宋体;">出版社的一个编辑在位于曼哈顿西</span><span style="" lang="EN-US">26</span><span style="font-family: 宋体;">街“</span><span style="" lang="EN-US">Garage</span><span style="font-family: 宋体;">”的古董跳蚤市场买到了这本画册。卖主是住在土耳其安卡拉的一个美国人,交易时间是在那天他准备收摊的时候。这位编辑没带够买这本画册所需的现金,并且卖主礼貌地拒绝了他使用信用卡和支票。卖主当天晚上要飞回安卡拉,看起来好像没什么希望了。该怎么解决呢?最后通过握手来约定的老式的君子协议解决了。卖主提议通过银行转账付款,编辑在纸上抄下了收款银行的信息,随后画册就到他手里了。不用说,第二天我们就把款付给了卖主。我们感谢这位陌生人能如此信任我们的同事。这让我们回忆起了那个很久以前的美好时代。</span><span style="" lang="EN-US"><p></p></span></p> <p class="MsoNormal" style="text-indent: 20pt;"><span style="font-family: 宋体;">来自奥斯曼帝国画册的图片,就像在丛书封面上出现的其他插图一样,将两个世纪之前的服饰习俗的丰富性和多样性带到我们身边。这些图片令我们回忆起那个时代的隔绝和距离,以及除了这个通信极度发达的时代之外的其他每一个历史时代。</span><span style="" lang="EN-US"><p></p></span></p> <p class="MsoNormal" style="text-indent: 20pt;"><span style="font-family: 宋体;">从那以后,服饰习俗所代表的不同区域间的差异已经改变了,那个时期的丰富多彩的服饰文化也逐渐褪色。如今已经很难区分两个不同地区的居民了。也许我们应该尽量乐观地看待这些变化,文化上、视觉上的差异已经转变为更加多样化的个人生活上的差异,或者更加多样化和更加有趣的智力上和技术生活上的差异。</span><span style="" lang="EN-US"><p></p></span></p> <p class="MsoNormal" style="text-indent: 20pt;"><span style="font-family: 宋体;">我们使用来自这本画册的图片作为本书的封面,这为我们带来了两个世纪之前的丰富的、多样性的区域生活。</span><span style="" lang="EN-US">Manning</span><span style="font-family: 宋体;">出版社使用这种方式来赞美计算机行业中的创新性和主动性,当然,还包括其中的乐趣。</span><span style="" lang="EN-US"><p></p></span></p> <p class="MsoNormal" style="text-indent: 20pt;"><span style="" lang="EN-US"><p></p></span></p> <p class="MsoNormal" style="text-align: right; text-indent: 20pt;" align="right"><span style="" lang="EN-US">Dave</span><span style="font-family: 楷体_GB2312;">、</span><span style="" lang="EN-US">Bear</span><span style="font-family: 楷体_GB2312;">和</span><span style="" lang="EN-US">Jord</span><span style="" lang="EN-US"><p></p></span></p></defjc></rmargin></lmargin></dispdef></smallfrac>
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值