??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲毛片免费视频,亚洲区视频在线观看,亚洲另类自拍丝袜第1页http://www.tkk7.com/zhshgu1983/category/13001.html_______ >>>>>>>zh-cnWed, 28 Feb 2007 08:11:19 GMTWed, 28 Feb 2007 08:11:19 GMT60关于Ajax的一本书和三个例子?/title><link>http://www.tkk7.com/zhshgu1983/articles/57910.html</link><dc:creator>守?/dc:creator><author>守?/author><pubDate>Thu, 13 Jul 2006 02:13:00 GMT</pubDate><guid>http://www.tkk7.com/zhshgu1983/articles/57910.html</guid><wfw:comment>http://www.tkk7.com/zhshgu1983/comments/57910.html</wfw:comment><comments>http://www.tkk7.com/zhshgu1983/articles/57910.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/zhshgu1983/comments/commentRss/57910.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/zhshgu1983/services/trackbacks/57910.html</trackback:ping><description><![CDATA[一个同事共享了一本关于Ajax的书Q又从另一同事那里获得几个Ajax的小的Sample?br />现在׃n出来~~?需要的话,可以自己<a href="/Files/zhshgu1983/AJax.rar">下蝲</a>?img src ="http://www.tkk7.com/zhshgu1983/aggbug/57910.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/zhshgu1983/" target="_blank">守?/a> 2006-07-13 10:13 <a href="http://www.tkk7.com/zhshgu1983/articles/57910.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>掌握 AjaxQ第 1 部分: Ajax ?/title><link>http://www.tkk7.com/zhshgu1983/articles/57759.html</link><dc:creator>守?/dc:creator><author>守?/author><pubDate>Wed, 12 Jul 2006 02:52:00 GMT</pubDate><guid>http://www.tkk7.com/zhshgu1983/articles/57759.html</guid><wfw:comment>http://www.tkk7.com/zhshgu1983/comments/57759.html</wfw:comment><comments>http://www.tkk7.com/zhshgu1983/articles/57759.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/zhshgu1983/comments/commentRss/57759.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/zhshgu1983/services/trackbacks/57759.html</trackback:ping><description><![CDATA[ <p>五年前,如果不知?XMLQ?zhn)是一只无人重视的丑小鸭。十八个月前QRuby 成了x的中心,不知?Ruby 的程序员只能坐冷板凳了?今天Q如果想跟上最新的技术时,那?zhn)的目标就?Ajax?/p> <p>但是QAjax ?i>仅仅</i> 是一U时,它是一U构建网站的强大Ҏ(gu)Q而且不像学习一U全新的语言那样困难?/p> <p>但在详细探讨 Ajax 是什么之前,先让我们花几分钟了解 Ajax <i>?/i> 什么。目前,~写应用E序时有两种基本的选择Q?/p> <ul> <li>桌面应用E序 </li> <li>Web 应用E序 </li> </ul> <p>两者是cM的,桌面应用E序通常?CD Z质(有时候可从网站下载)q完全安装到(zhn)的计算Z。桌面应用程序可能用互联网下蝲?斎ͼ但运行这些应用程序的代码在桌面计机上。Web 应用E序q行在某处的 Web 服务器上 —?毫不奇怪,要通过 Web 览器访问这U应 用程序?/p> <p>不过Q比q些应用E序的运行代码放在何处更重要的是Q应用程序如何运转以及如何与其进行交互。桌面应用程序一般很快(在(zhn)的计算 Zq行Q不用等待互联网q接Q,h漂亮的用L面(通常和操作系l有养I和非凡的动态性。可以单凅R选择、输入、打开菜单和子?单、到处E游,基本上不需要等待?/p> <p>另一斚wQWeb 应用E序是最新的潮流Q它们提供了在桌面上不能实现的服务(比如 Amazon.com ?eBayQ。但是,伴随着 Web 的强大?出现的是{待Q等待服务器响应Q等待屏q刷斎ͼ{待hq回和生成新的页面?/p> <p>昄q样说过于简略了Q但基本的概念就是如此。?zhn)可能已经猜到QAjax 试建立桌面应用E序的功能和交互性,与不断更新的 Web 应用 E序之间的桥梁。可以用像桌面应用E序中常见的动态用L面和漂亮的控Ӟ不过是在 Web 应用E序中?/p> <p>q等什么呢Q我们来看看 Ajax 如何笨拙的 Web 界面转化成能q速响应的 Ajax 应用E序吧?/p> <p> <a name="N10098"> <span id="qe4m8iw" class="atitle"> <font face="Arial" color="#333366">老技术,新技?/font> </span> </a> </p> <p>在谈?Ajax Ӟ实际上涉及到多种技术,要灵zdq用它必L入了解这些不同的技术(本系列的头几文章将分别讨论q些技术)。好 消息是?zhn)可能已经非常熟(zhn)其中的大部分技术,更好的是q些技术都很容易学习,q不像完整的~程语言Q如 Java ?RubyQ那样困难?/p> <p> </p> <table cellspacing="0" cellpadding="0" width="40%" align="right" border="0"> <tbody> <tr> <td width="10"> <img height="1" alt="" src="http://www.ibm.com/i/c.gif" width="10" /> </td> <td> <table cellspacing="0" cellpadding="5" width="100%" border="1"> <tbody> <tr> <td bgcolor="#eeeeee"> <a name="N100A3"> <b> <font face="Arial" color="#333366">Ajax 的定?/font> </b> </a> <br /> <p>Z说一下,Ajax ?Asynchronous JavaScript and XMLQ以?DHTML {)的羃写。这个短语是 Adaptive Path ?Jesse James Garrett 发明的(请参?<a ><font face="Arial" color="#333366">参考资?/font></a>Q,按照 Jesse 的解释,q?i>不是</i> 个首字母~写词?/p> </td> </tr> </tbody> </table> </td> </tr> </tbody> </table> <p>下面?Ajax 应用E序所用到的基本技术:</p> <ul> <li>HTML 用于建立 Web 表单q确定应用程序其他部分用的字段? </li> <li>JavaScript 代码是运?Ajax 应用E序的核心代码,帮助改进与服务器应用E序的通信? </li> <li>DHTML ?Dynamic HTMLQ用于动态更新表单。我们将使用 <code>div</code>?code>span</code> 和其他动?HTML 元素来标?HTML? </li> <li>文档对象模型 DOM 用于Q通过 JavaScript 代码Q处?HTML l构和(某些情况下)服务器返回的 XML?</li> </ul> <p>我们来进一步分析这些技术的职责。以后的文章中我深入讨些技术,目前只要熟?zhn)q些lg和技术就可以了。对q些代码熟(zhn),?容易从对这些技术的零散了解转变到真正把握这些技术(同时也真正打开?Web 应用E序开发的大门Q?/p> <p> <a name="N100D0"> <span id="m44oe4q" class="smalltitle"> <font face="Arial" color="#333366">XMLHttpRequest 对象</font> </span> </a> </p> <p>要了解的一个对象可能对(zhn)来说也是最陌生的,?<code>XMLHttpRequest</code>。这是一?JavaScript 对象Q创对象很简单,?a ><font face="Arial" color="#333366">清单 1</font></a> 所C?/p> <p> <br /> <a name="code1"> <b> <font face="Arial" color="#333366">清单 1. 创徏新的 XMLHttpRequest 对象</font> </b> </a> <br /> </p> <table cellspacing="0" cellpadding="5" width="100%" bgcolor="#eeeeee" border="1"> <tbody> <tr> <td> <pre> <code class="section"> <script language="javascript" type="text/javascript"> var xmlHttp = new XMLHttpRequest(); </script> </code> </pre> </td> </tr> </tbody> </table> <br /> <p>下一期文章中进一步讨个对象,现在要知道这是处理所有服务器通信的对象。l阅M前,先停下来想一惻I通过 <code>XMLHttpRequest</code> 对象与服务器q行对话的是 <i>JavaScript</i> 技术。这不是一般的应用E序,q恰恰是 Ajax 的强大功?的来源?/p> <p>在一般的 Web 应用E序中,用户填写表单字段q单?<i>Submit</i> 按钮。然后整个表单发送到服务器,服务器将它{发给处理表单的脚 本(通常?PHP ?JavaQ也可能?CGI q程或者类似的东西Q,脚本执行完成后再发送回全新的页面。该面可能是带有已l填充某些数?的新表单?HTMLQ也可能是确认页面,或者是hҎ(gu)原来表单中输入数据选择的某些选项的页面。当Ӟ在服务器上的脚本或程序处理和q?回新表单时用户必ȝ待。屏q变成一片空白,{到服务器返回数据后再重新绘制。这是交互性差的原因,用户得不到立卛_馈,因此感觉 不同于桌面应用程序?/p> <p>Ajax 基本上就是把 JavaScript 技术和 <code>XMLHttpRequest</code> 对象攑֜ Web 表单和服务器<i>之间</i>。当用户填写表单Ӟ?据发送给一?JavaScript 代码?i>不是</i> 直接发送给服务器。相反,JavaScript 代码捕获表单数据q向服务器发送请求。同时用户屏q?上的表单也不会闪烁、消失或延迟。换句话_JavaScript 代码在幕后发送请求,用户甚至不知道请求的发出。更好的是,h是异步发送的 Q就是说 JavaScript 代码Q和用户Q不用等待服务器的响应。因此用户可以l输入数据、滚动屏q和使用应用E序?/p> <p>然后Q服务器数据返?JavaScript 代码Q仍然在 Web 表单中)Q后者决定如何处理这些数据。它可以q速更新表单数据,让h感觉?用程序是立即完成的,表单没有提交或刷新而用户得C新数据。JavaScript 代码甚至可以Ҏ(gu)到的数据执行某种计算Q再发送另一个请求, 完全不需要用户干预!q就?<code>XMLHttpRequest</code> 的强大之处。它可以Ҏ(gu)需要自行与服务器进行交互,用户甚至可以完全不知?q后发生的一切。结果就是类g桌面应用E序的动态、快速响应、高交互性的体验Q但是背后又拥有互联|的全部强大力量?/p> <p> <a name="N1010E"> <span id="6w4444e" class="smalltitle"> <font face="Arial" color="#333366">加入一?JavaScript</font> </span> </a> </p> <p>得到 <code>XMLHttpRequest</code> 的句柄后Q其他的 JavaScript 代码非常简单了。事实上Q我们将使用 JavaScript 代码完成非常 基本的Q务:</p> <ul> <li>获取表单数据QJavaScript 代码很容易从 HTML 表单中抽取数据ƈ发送到服务器? </li> <li>修改表单上的数据Q更新表单也很简单,从设|字D值到q速替换图像? </li> <li>解析 HTML ?XMLQ?JavaScript 代码操纵 DOMQ请参阅 <a ><font face="Arial" color="#333366">下一?/font></a>Q,处理 HTML 表单服务器返回的 XML 数据?l构?</li> </ul> <p>对于前两点,需要非常熟(zhn)?<code>getElementById()</code> Ҏ(gu)Q如 <a ><font face="Arial" color="#333366">清单 2</font></a> 所C?/p> <p> <br /> <a name="code2"> <b> <font face="Arial" color="#333366">清单 2. ?JavaScript 代码捕获和设|字D?/font> </b> </a> <br /> </p> <table cellspacing="0" cellpadding="5" width="100%" bgcolor="#eeeeee" border="1"> <tbody> <tr> <td> <pre> <code class="section"> // Get the value of the "phone" field and stuff it in a variable called phone var phone = document.getElementById("phone").value; // Set some values on a form using an array called response document.getElementById("order").value = response[0]; document.getElementById("address").value = response[1]; </code> </pre> </td> </tr> </tbody> </table> <br /> <p>q里没有特别需要注意的地方Q真是好极了Q?zhn)应该认识到这里ƈ没有非常复杂的东ѝ只要掌握了 <code>XMLHttpRequest</code>QAjax 应用E序的其他部分就是如 <a ><font face="Arial" color="#333366">清单 2</font></a> 所C的?JavaScript 代码了,混合有少量的 HTML。同Ӟq要用一点儿 DOM Q我们就来看看吧?/p> <p> <a name="dom"> <span id="m4icuqi" class="smalltitle"> <font face="Arial" color="#333366">?DOM l束</font> </span> </a> </p> <p>最后还?DOMQ即文档对象模型。可能对有些读者来?DOM 有点儿o人生畏,HTML 设计者很用它Q即?JavaScript E序员也不大?到它Q除非要完成某项高端~程d。大量?DOM ?i>?/i> 复杂?Java ?C/C++ E序Q这可能是 DOM 被认为难以学习的原因?</p> <p>q运的是Q在 JavaScript 技术中使用 DOM 很容易,也非常直观。现在,按照常规也许应该说明如何使用 DOMQ或者至要l出一些示?代码Q但q样做也可能误导(zhn)。即使不理会 DOMQ仍然能深入地探?AjaxQ这也是我准备采用的Ҏ(gu)。以后的文章再ơ讨?DOMQ现在只?知道可能需?DOM 可以了。当需要在 JavaScript 代码和服务器之间传?XML 和改?HTML 表单的时候,我们再深入研I?DOM。没有它?能做一些有的工作Q因此现在就?DOM 攑ֈ一边吧?/p> <p> <br /> </p> <table cellspacing="0" cellpadding="0" width="100%" border="0"> <tbody> <tr> <td> <img height="1" alt="" src="http://www.ibm.com/i/v14/rules/blue_rule.gif" width="100%" /> <br /> <img height="6" alt="" src="http://www.ibm.com/i/c.gif" width="8" border="0" /> </td> </tr> </tbody> </table> <table class="no-print" cellspacing="0" cellpadding="0" align="right"> <tbody> <tr align="right"> <td> <img height="4" alt="" src="http://www.ibm.com/i/c.gif" width="100%" /> <br /> <table cellspacing="0" cellpadding="0" border="0"> <tbody> <tr> <td valign="center"> <img height="16" alt="" src="http://www.ibm.com/i/v14/icons/u_bold.gif" width="16" border="0" /> <br /> </td> <td valign="top" align="right"> <a class="fbox" > <b> </b> </a> </td> </tr> </tbody> </table> </td> </tr> </tbody> </table> <br /> <br /> <p> <a name="N10158"> <span id="oi8soow" class="atitle"> <font face="Arial" color="#333366">获取 Request 对象</font> </span> </a> </p> <p>有了上面的基知识后,我们来看看一些具体的例子?code>XMLHttpRequest</code> ?Ajax 应用E序的核心,而且对很多读者来说可?q比较陌生,我们׃q里开始吧。从 <a ><font face="Arial" color="#333366">清单 1</font></a> 可以看出Q创建和使用q个对象非常单,不是吗?{一{?/p> <p>q记得几q前的那些讨厌的览器战争吗Q没有一样东西在不同的浏览器上得到同Ll果。不?zhn)是否怿Q这些战争仍然在l箋Q虽?规模较小。但令h奇怪的是,<code>XMLHttpRequest</code> 成了q场战争的牺牲品之一。因此获?<code>XMLHttpRequest</code> 对象可能 需要采用不同的Ҏ(gu)。下面我详l地q行解释?/p> <p> <a name="N10174"> <span id="iowsw8q" class="smalltitle"> <font face="Arial" color="#333366">使用 Microsoft 览?/font> </span> </a> </p> <p>Microsoft 览?Internet Explorer 使用 MSXML 解析器处?XMLQ可以通过 <a ><font face="Arial" color="#333366">参考资?/font></a> q一步了?MSXML Q。因此如果编写的 Ajax 应用E序要和 Internet Explorer 打交道,那么必须用一U特D的方式创徏对象?/p> <p>但ƈ不是q么单。根?Internet Explorer 中安装的 JavaScript 技术版本不同,MSXML 实际上有两种不同的版本,因此必须对这两种 情况分别~写代码。请参阅 <a ><font face="Arial" color="#333366">清单 3</font></a>Q其中的代码?Microsoft 览器上创徏了一?<code>XMLHttpRequest</code>?</p> <p> <br /> <a name="code3"> <b> <font face="Arial" color="#333366">清单 3. ?Microsoft 览器上创徏 XMLHttpRequest 对象</font> </b> </a> <br /> </p> <table cellspacing="0" cellpadding="5" width="100%" bgcolor="#eeeeee" border="1"> <tbody> <tr> <td> <pre> <code class="section"> var xmlHttp = false; try { xmlHttp = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try { xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e2) { xmlHttp = false; } } </code> </pre> </td> </tr> </tbody> </table> <br /> <p>(zhn)对q些代码可能q不完全理解Q但没有关系。当本系列文章结束的时候,(zhn)将?JavaScript ~程、错误处理、条件编译等有更q了解 。现在只要牢牢记住其中的两行代码Q?/p> <p> <code>xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");</code> </p> <p>?/p> <p> <code>xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");</code>?/p> <p>q两行代码基本上是试使用一个版本的 MSXML 创徏对象Q如果失败则使用另一个版本创对象。不错吧Q如果都不成功,则将 <code>xmlHttp</code> 变量设ؓ falseQ告诉?zhn)的代码出C问题。如果出现这U情况,可能是因为安装了?Microsoft 览器,需要?不同的代码?/p> <p> <a name="N101AE"> <span id="m444o44" class="smalltitle"> <font face="Arial" color="#333366">处理 Mozilla 和非 Microsoft 览?/font> </span> </a> </p> <p>如果选择的浏览器不是 Internet ExplorerQ或者ؓ?Microsoft 览器编写代码,需要用不同的代码。事实上是 <a ><font face="Arial" color="#333366">清单 1</font></a> 所C的一行简单代码:</p> <hidden name="N/A"> <p> <code>var xmlHttp = new XMLHttpRequest object;</code>?/p> <p>q行单得多的代码?Mozilla、Firefox、Safari、Opera 以及基本上所有以M形式或方式支?Ajax 的非 Microsoft 览器中Q创??<code>XMLHttpRequest</code> 对象?/p> <p> <a name="N101C7"> <span id="q8auwcs" class="smalltitle"> <font face="Arial" color="#333366">l合h</font> </span> </a> </p> <p>关键是要支持<i>所?/i> 览器。谁愿意~写一个只能用?Internet Explorer 或者非 Microsoft 览器的应用E序呢?或者更p,?~写一个应用程序两ơ?当然不!因此代码要同时支?Internet Explorer 和非 Microsoft 览器?a ><font face="Arial" color="#333366">清单 4</font></a> 昄?q样的代码?/p> <p> <br /> <a name="code4"> <b> <font face="Arial" color="#333366">清单 4. 以支持多U浏览器的方式创?XMLHttpRequest 对象</font> </b> </a> <br /> </p> <table cellspacing="0" cellpadding="5" width="100%" bgcolor="#eeeeee" border="1"> <tbody> <tr> <td> <pre> <code class="section"> /* Create a new XMLHttpRequest object to talk to the Web server */ var xmlHttp = false; /*@cc_on @*/ /*@if (@_jscript_version >= 5) try { xmlHttp = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try { xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e2) { xmlHttp = false; } } @end @*/ if (!xmlHttp && typeof XMLHttpRequest != "undefined") { xmlHttp = new XMLHttpRequest(); } </code> </pre> </td> </tr> </tbody> </table> <br /> <p>现在先不那些注释掉的奇怪符P?<code>@cc_on</code>Q这是特D的 JavaScript ~译器命令,在下一期针?<code>XMLHttpRequest</code> 的文章中详细讨论。这D代码的核心分ؓ三步Q?/p> <ol> <li>建立一个变?<code>xmlHttp</code> 来引用即创建的 <code>XMLHttpRequest</code> 对象? </li> <li>试?Microsoft 览器中创徏该对象: <ul><li>试使用 <code>Msxml2.XMLHTTP</code> 对象创徏它? </li><li>如果p|Q再试 <code>Microsoft.XMLHTTP</code> 对象?</li></ul></li> <li>如果仍然没有建立 <code>xmlHttp</code>Q则以非 Microsoft 的方式创对象?</li> </ol> <p>最后,<code>xmlHttp</code> 应该引用一个有效的 <code>XMLHttpRequest</code> 对象Q无行什么样的浏览器?/p> <p> <a name="N10220"> <span id="8ea48eo" class="smalltitle"> <font face="Arial" color="#333366">关于安全性的一点说?/font> </span> </a> </p> <p>安全性如何呢Q现在浏览器允许用户提高他们的安全等U,关闭 JavaScript 技术,用览器中的Q何选项。在q种情况下,代码无论?何都不会工作。此时必适当地处理问题,q需要单独的一文章来讨论Q要攑ֈ以后了(q个pd够长了吧Q不用担心,d之前也许(zhn)就 掌握了)。现在要~写一D健壮但不够完美的代码,对于掌握 Ajax 来说很好了。以后我们还讨论更多的l节?/p> <p> <br /> </p> <table cellspacing="0" cellpadding="0" width="100%" border="0"> <tbody> <tr> <td> <img height="1" alt="" src="http://www.ibm.com/i/v14/rules/blue_rule.gif" width="100%" /> <br /> <img height="6" alt="" src="http://www.ibm.com/i/c.gif" width="8" border="0" /> </td> </tr> </tbody> </table> <table class="no-print" cellspacing="0" cellpadding="0" align="right"> <tbody> <tr align="right"> <td> <img height="4" alt="" src="http://www.ibm.com/i/c.gif" width="100%" /> <br /> <table cellspacing="0" cellpadding="0" border="0"> <tbody> <tr> <td valign="center"> <img height="16" alt="" src="http://www.ibm.com/i/v14/icons/u_bold.gif" width="16" border="0" /> <br /> </td> <td valign="top" align="right"> <a class="fbox" > <b> </b> </a> </td> </tr> </tbody> </table> </td> </tr> </tbody> </table> <br /> <br /> <p> <a name="N10228"> <span id="myq4kuc" class="atitle"> <font face="Arial" color="#333366">Ajax 世界?的请?响应</font> </span> </a> </p> <p>现在我们介绍?AjaxQ对 <code>XMLHttpRequest</code> 对象以及如何创徏它也有了基本的了解。如果阅d很仔l,(zhn)可能已l知道与 服务器上?Web 应用E序打交道的?JavaScript 技术,而不是直接提交给那个应用E序?HTML 表单?/p> <p>q缺什么呢Q到底如何?<code>XMLHttpRequest</code>。因D代码非帔R要,(zhn)编写的<i>每个</i> Ajax 应用E序都要以某U?形式使用它,先看?Ajax 的基本请?响应模型是什么样吧?/p> <p> <a name="N1023F"> <span id="qsusk84" class="smalltitle"> <font face="Arial" color="#333366">发出h</font> </span> </a> </p> <p>(zhn)已l有了一个崭新的 <code>XMLHttpRequest</code> 对象Q现在让它干Ҏ(gu)儿吧。首先需要一?Web 面能够调用?JavaScript Ҏ(gu) Q比如当用户输入文本或者从菜单中选择一Ҏ(gu)Q。接下来是在所?Ajax 应用E序中基本都雷同的流E:</p> <ol> <li>?Web 表单中获取需要的数据? </li> <li>建立要连接的 URL? </li> <li>打开到服务器的连接? </li> <li>讄服务器在完成后要q行的函数? </li> <li>发送请求?</li> </ol> <p> <a > <font face="Arial" color="#333366">清单 5</font> </a> 中的CZ Ajax Ҏ(gu)是按照q个序l织的:</p> <p> <br /> <a name="code5"> <b> <font face="Arial" color="#333366">清单 5. 发出 Ajax h</font> </b> </a> <br /> </p> <table cellspacing="0" cellpadding="5" width="100%" bgcolor="#eeeeee" border="1"> <tbody> <tr> <td> <pre> <code class="section"> function callServer() { // Get the city and state from the web form var city = document.getElementById("city").value; var state = document.getElementById("state").value; // Only go on if there are values for both fields if ((city == null) || (city == "")) return; if ((state == null) || (state == "")) return; // Build the URL to connect to var url = "/scripts/getZipCode.php?city=" + escape(city) + "&state=" + escape(state); // Open a connection to the server xmlHttp.open("GET", url, true); // Setup a function for the server to run when it"s done xmlHttp.onreadystatechange = updatePage; // Send the request xmlHttp.send(null); } </code> </pre> </td> </tr> </tbody> </table> <br /> <p>其中大部分代码意义都很明。开始的代码使用基本 JavaScript 代码获取几个表单字段的倹{然后设|一?PHP 脚本作ؓ链接的目标?要注意脚?URL 的指定方式,city ?stateQ来自表单)使用单的 GET 参数附加?URL 之后?/p> <p>然后打开一个连接,q是(zhn)第一ơ看C?<code>XMLHttpRequest</code>。其中指定了q接Ҏ(gu)QGETQ和要连接的 URL。最后一个参?如果设ؓ <code>true</code>Q那么将h一个异步连接(q就?Ajax 的由来)。如果?<code>false</code>Q那么代码发求后等 待服务器q回的响应。如果设?<code>true</code>Q当服务器在后台处理h的时候用户仍然可以用表单(甚至调用其他 JavaScript ?法)?/p> <p> <code>xmlHttp</code>Q要CQ这?<code>XMLHttpRequest</code> 对象实例Q的 <code>onreadystatechange</code> 属性可以告诉服 务器在运?i>完成</i> 后(可能要用五分钟或者五个小Ӟ做什么。因Z码没有等待服务器Q必让服务器知道怎么做以便?zhn)能作出响?。在q个CZ中,如果服务器处理完了请求,一个特D的名ؓ <code>updatePage()</code> 的方法将被触发?/p> <p>最后,使用?<code>null</code> 调用 <code>send()</code>。因为已l在h URL 中添加了要发送给服务器的数据Qcity ?stateQ?Q所以请求中不需要发送Q何数据。这样就发出了请求,服务器按照?zhn)的要求工作?/p> <p>如果没有发现M新鲜的东西,(zhn)应该体会到q是多么单明了!除了牢牢C Ajax 的异步特性外Q这些内定w相当单。应该感Ȁ Ajax 使?zhn)能够专心~写漂亮的应用程序和界面Q而不用担心复杂的 HTTP h/响应代码?/p> <p> <a > <font face="Arial" color="#333366">清单 5</font> </a> 中的代码说明?Ajax 的易用性。数据是单的文本Q可以作?URL 的一部分。用 GET 而不是更复杂 ?POST 发送请求。没?XML 和要d的内容头部,h体中没有要发送的数据Q换句话_q就?Ajax 的乌托邦?/p> <p>不用担心Q随着本系列文章的展开Q事情会变得来复杂。?zhn)看到如何发?POST h、如何设|请求头部和内容cd、如何在消息?~码 XML、如何增加请求的安全性,可以做的工作q有很多Q暂时先不用那些难点,掌握好基本的东西p了,很快我们׃建立一整套?Ajax 工具库?/p> <p> <a name="N102B0"> <span id="kqu4a8q" class="smalltitle"> <font face="Arial" color="#333366">处理响应</font> </span> </a> </p> <p>现在要面Ҏ(gu)务器的响应了。现在只要知道两点:</p> <ul> <li>什么也不要做,直到 <code>xmlHttp.readyState</code> 属性的值等?4? </li> <li>服务器将把响应填充到 <code>xmlHttp.responseText</code> 属性中?</li> </ul> <p>其中的第一点,卛_l状态,在下一文章中详细讨论Q?zhn)进一步了?HTTP h的阶D,可能比?zhn)设想的还多。现在只要检查一个特 定的|4Q就可以了(下一期文章中q有更多的D介绍Q。第二点Q?<code>xmlHttp.responseText</code> 属性获得服务器的响应, q很单?a ><font face="Arial" color="#333366">清单 6</font></a> 中的CZҎ(gu)可供服务器根?<a ><font face="Arial" color="#333366">清单 5</font></a> 中发送的数据调用?/p> <p> <br /> <a name="code6"> <b> <font face="Arial" color="#333366">清单 6. 处理服务器响?/font> </b> </a> <br /> </p> <table cellspacing="0" cellpadding="5" width="100%" bgcolor="#eeeeee" border="1"> <tbody> <tr> <td> <pre> <code class="section"> function updatePage() { if (xmlHttp.readyState == 4) { var response = xmlHttp.responseText; document.getElementById("zipCode").value = response; } } </code> </pre> </td> </tr> </tbody> </table> <br /> <p>q些代码同样既不难也不复杂。它{待服务器调用,如果是就l状态,则用服务器q回的|q里是用戯入的城市和州?ZIP ~码Q?讄另一个表单字D늚倹{于是包?ZIP ~码?<code>zipCode</code> 字段H然出现了,而用?i>没有按Q何按?/i>Q这是前面所?的桌面应用程序的感觉。快速响应、动态感受等{,q些都只因ؓ有了小的一D?Ajax 代码?/p> <p>l心的读者可能注意到 <code>zipCode</code> 是一个普通的文本字段。一旦服务器q回 ZIP ~码Q?code>updatePage()</code> Ҏ(gu)?用城?州的 ZIP ~码讄那个字段的|用户可以改写该倹{这样做有两个原因:保持例子单,说明有时候可?i>希望</i> 用户能够 修改服务器返回的数据。要Cq两点,它们对于好的用户界面设计来说很重要?/p> <p> <br /> </p> <table cellspacing="0" cellpadding="0" width="100%" border="0"> <tbody> <tr> <td> <img height="1" alt="" src="http://www.ibm.com/i/v14/rules/blue_rule.gif" width="100%" /> <br /> <img height="6" alt="" src="http://www.ibm.com/i/c.gif" width="8" border="0" /> </td> </tr> </tbody> </table> <table class="no-print" cellspacing="0" cellpadding="0" align="right"> <tbody> <tr align="right"> <td> <img height="4" alt="" src="http://www.ibm.com/i/c.gif" width="100%" /> <br /> <table cellspacing="0" cellpadding="0" border="0"> <tbody> <tr> <td valign="center"> <img height="16" alt="" src="http://www.ibm.com/i/v14/icons/u_bold.gif" width="16" border="0" /> <br /> </td> <td valign="top" align="right"> <a class="fbox" > <b> </b> </a> </td> </tr> </tbody> </table> </td> </tr> </tbody> </table> <br /> <br /> <p> <a name="N102FB"> <span id="4844k44" class="atitle"> <font face="Arial" color="#333366">q接 Web ??/font> </span> </a> </p> <p>q有什么呢Q实际上没有多少了。一?JavaScript Ҏ(gu)捕捉用户输入表单的信息ƈ其发送到服务器,另一?JavaScript Ҏ(gu)监听和处 理响应,q在响应q回时设|字D늚倹{所有这些实际上都依赖于<i>调用</i> W一?JavaScript Ҏ(gu)Q它启动了整个过E。最明显的办?是在 HTML 表单中增加一个按钮,但这?2001 q的办法Q?zhn)不这栯为吗Q还是像 <a ><font face="Arial" color="#333366">清单 7</font></a> q样利用 JavaScript 技 术吧?/p> <p> <br /> <a name="code7"> <b> <font face="Arial" color="#333366">清单 7. 启动一?Ajax q程</font> </b> </a> <br /> </p> <table cellspacing="0" cellpadding="5" width="100%" bgcolor="#eeeeee" border="1"> <tbody> <tr> <td> <pre> <code class="section"> <form> <p>City: <input type="text" name="city" id="city" size="25" <span id="48qk4mc" class="boldcode">onChange="callServer();"</span> /></p> <p>State: <input type="text" name="state" id="state" size="25" <span id="sq8w4e4" class="boldcode">onChange="callServer();"</span> /></p> <p>Zip Code: <input type="text" name="zipCode" id="city" size="5" /></p> </form> </code> </pre> </td> </tr> </tbody> </table> <br /> <p>如果感觉q像是一D늛当普通的代码Q那对了,正是如此Q当用户?city ?state 字段中输入新的值时Q?code>callServer()</code> Ҏ(gu)p触发Q于?Ajax 开始运行了。有点儿明白怎么回事了吧Q好Q就是如此!</p> <p> <br /> </p> <table cellspacing="0" cellpadding="0" width="100%" border="0"> <tbody> <tr> <td> <img height="1" alt="" src="http://www.ibm.com/i/v14/rules/blue_rule.gif" width="100%" /> <br /> <img height="6" alt="" src="http://www.ibm.com/i/c.gif" width="8" border="0" /> </td> </tr> </tbody> </table> <table class="no-print" cellspacing="0" cellpadding="0" align="right"> <tbody> <tr align="right"> <td> <img height="4" alt="" src="http://www.ibm.com/i/c.gif" width="100%" /> <br /> <table cellspacing="0" cellpadding="0" border="0"> <tbody> <tr> <td valign="center"> <img height="16" alt="" src="http://www.ibm.com/i/v14/icons/u_bold.gif" width="16" border="0" /> <br /> </td> <td valign="top" align="right"> <a class="fbox" > <b> </b> </a> </td> </tr> </tbody> </table> </td> </tr> </tbody> </table> <br /> <br /> <p> <a name="N10323"> <span id="ay8eayw" class="atitle"> <font face="Arial" color="#333366">l束?</font> </span> </a> </p> <p>现在(zhn)可能已l准备开始编写第一?Ajax 应用E序了,臛_也希望认真读一?<a ><font face="Arial" color="#333366">参考资?/font></a> 中的那些文章了吧 Q但可以首先从这些应用程序如何工作的基本概念开始,?<code>XMLHttpRequest</code> 对象有基本的了解。在下一期文章中Q?zhn)掌握?个对象,学会如何处理 JavaScript 和服务器的通信、如何?HTML 表单以及如何获得 DOM 句柄?/p> <p>现在先花点儿旉考虑考虑 Ajax 应用E序有多么强大。设想一下,当单L钮、输入一个字Dc从l合框中选择一个选项或者用鼠标在屏 q上拖动ӞWeb 表单能够立刻作出响应会是什么情形。想一?i>异步</i> I竟意味着什么,想一?JavaScript 代码q行而且<i>不等?</i>服务器对它的h作出响应。会遇到什么样的问题?会进入什么样的领域?考虑到这U新的方法,~程的时候应如何改变表单的设计? </p> <p>如果在这些问题上׃点儿旉Q与单地剪切/_脓(chung)某些代码到?zhn)?gu)不理解的应用E序中相比,收益会更多。在下一期文章中Q我们将 把这些概念付诸实践,详细介绍使应用程序按照这U方式工作所需要的代码。因此,现在先n受一?Ajax 所带来的可能性吧?/p> </hidden> <img src ="http://www.tkk7.com/zhshgu1983/aggbug/57759.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/zhshgu1983/" target="_blank">守?/a> 2006-07-12 10:52 <a href="http://www.tkk7.com/zhshgu1983/articles/57759.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <p>лǵվܻԴȤ</p> <a href="http://www.tkk7.com/" title="亚洲av成人片在线观看">亚洲av成人片在线观看</a> <div class="friend-links"> </div> </div> </footer> վ֩ģ壺 <a href="http://jjwgzx.com" target="_blank">պŷһ</a>| <a href="http://jpsp8.com" target="_blank">޾ɫ߲</a>| <a href="http://kwknc.com" target="_blank">AVվ</a>| <a href="http://wwwaa875.com" target="_blank">ĻþƷƵ</a>| <a href="http://meiluniao.com" target="_blank">Իavҹҹˬ</a>| <a href="http://njchxf.com" target="_blank">ƷžƷƵ</a>| <a href="http://xiaoduanfa.com" target="_blank">ٸaëƬ˳</a>| <a href="http://zjlxblog.com" target="_blank">ŷƵѹ</a>| <a href="http://xx16xx.com" target="_blank">޹˾þһWWW</a>| <a href="http://yuyang0752.com" target="_blank">žۺVAѿ</a>| <a href="http://laxdz.com" target="_blank">޾þþþþ77777 ޾ƷAAƬѽ </a>| <a href="http://shadaiym.com" target="_blank">ڵƵվ</a>| <a href="http://juytv.com" target="_blank">޾Ʒ߹ۿ</a>| <a href="http://fenglufzjx.com" target="_blank">߹ۿ</a>| <a href="http://xxnxgay.com" target="_blank">һëƬѿ</a>| <a href="http://cswangli.com" target="_blank">Ļר</a>| <a href="http://xiaoduanfa.com" target="_blank">99ƵƵۿ</a>| <a href="http://aqddv.com" target="_blank">þþƷav </a>| <a href="http://9ts9.com" target="_blank">ƵƷ</a>| <a href="http://wenfaka.com" target="_blank">av뾫Ʒַ</a>| <a href="http://rhacu.com" target="_blank">޾Ʒþþwww</a>| <a href="http://www827556.com" target="_blank">avƬ߹ۿ</a>| <a href="http://aqddv.com" target="_blank">Ƶ</a>| <a href="http://shenghe228.com" target="_blank">ȾþþƷƵ</a>| <a href="http://400209.com" target="_blank">һ˿ѹۿձƵwww һ˿Ƶwww߸嶯 </a>| <a href="http://yg36.com" target="_blank">jyzzjyzzƵ</a>| <a href="http://bearsou.com" target="_blank">˾ҹƵѹ</a>| <a href="http://1877808.com" target="_blank">޾ƷҺ</a>| <a href="http://zndijgch.com" target="_blank">91߹ۿ</a>| <a href="http://58rjz.com" target="_blank">ŮƵվ</a>| <a href="http://cih60o.com" target="_blank">Avۺɫרɫ</a>| <a href="http://gisdn.com" target="_blank">avƬ</a>| <a href="http://haohaoshuo.com" target="_blank">ؼëƬȫѲaһ</a>| <a href="http://jyd56.com" target="_blank">avƷfc2 </a>| <a href="http://www5xsq.com" target="_blank">aëƬƵ</a>| <a href="http://9hao66.com" target="_blank">ϺƷAV߲</a>| <a href="http://8953y.com" target="_blank">AVɫ߹ۿ</a>| <a href="http://yy468.com" target="_blank">˳߲վ</a>| <a href="http://znboxcdn107.com" target="_blank">Ƶһ</a>| <a href="http://50077995.com" target="_blank">˳ҹѴƬ߹ۿ </a>| <a href="http://dodxs.com" target="_blank">ëƬ쿴</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>