??xml version="1.0" encoding="utf-8" standalone="yes"?>国产一区二区日韩,国产午夜一区二区三区,蜜桃一区二区http://www.aygfsteel.com/simie/category/23723.htmlzh-cnMon, 02 Jul 2007 23:19:21 GMTMon, 02 Jul 2007 23:19:21 GMT60AJAX 非宣传性简?/title><link>http://www.aygfsteel.com/simie/archive/2007/07/02/127665.html</link><dc:creator>和田?/dc:creator><author>和田?/author><pubDate>Mon, 02 Jul 2007 11:55:00 GMT</pubDate><guid>http://www.aygfsteel.com/simie/archive/2007/07/02/127665.html</guid><wfw:comment>http://www.aygfsteel.com/simie/comments/127665.html</wfw:comment><comments>http://www.aygfsteel.com/simie/archive/2007/07/02/127665.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/simie/comments/commentRss/127665.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/simie/services/trackbacks/127665.html</trackback:ping><description><![CDATA[<em>作者:Chris Schalk</em> <p> <h4>AJAX 核心基础技术的真实概述?/h4> <p><span id="wmqeeuq" class=legalese>2006 q?4 月发?/span> <p>q今为止Q您可能已经听过太多有关 AJAX 的宣传报道,而且很多产品都宣U它们支持或“兼容”AJAX。但是,很多人可能一直无法从技术角度对 AJAX 的实质进行简单、严谨的阐释。本文将摈弃所有华丽词藻,从^实的角度Ҏ?AJAX 的核心基q行概述?/p> <p> </p> <h2>首先QAJAX 是个C物吗Q?</h2> <p>q如此?em>q程 Javascript</em> 在最q掀起了一轮热潮。利用它Q开发h员能够?XML 数据与服务器交互。?AJAX 是一U远E?Javascript。AJAX 之所以成为可能,是因为现在许多主要的览器都提供可进行独?XML HTTP h?em>对象</em>。Internet Explorer 5 以及更高版本提供了一?<strong>XMLHTTP</strong> 对象Q而基?Mozilla 的浏览器则提供了一?<strong>XMLHttpRequest</strong> 对象。这些对象都能够从服务器h XML 数据Qƈ以类似的方式处理q些数据。所有能够动态提?XML 的技术都可以使用服务器端 AJAX lg。Q何动?Web 技术(?PHP ?ServletQ都可以充当 AJAX 服务器?</p> <p> </p> <p>q程 Javascript ?AJAX 的缺点之一是,<em>面作?/em>Q设计最l页面的人员Q必ȝ写相当数量的 Javascript 代码来管?XMLHTTP 交互。幸好,JavaServer Faces (JSF) 为此提供了一个解x案,从而 AJAX 更加易于使用?</p> <h2>Ajax Under The Hood<strong> </strong></h2> <p>只有了解?AJAX 客户?服务器事务中涉及的核?AJAX 体系l构后,方可q一步理解与其他技术(?JSFQ集成的更ؓ高?AJAX CZ?</p> <p>AJAX 目前可以提供以下两种核心技术: </p> <ul> <li>支持 Javascript 和支?XMLHTTP ?XMLHttpRequest 对象的浏览器 <li>能够?XML 响应?HTTP 服务器技?</li> </ul> <p>因ؓ所有流行的览器都支持 Javascript 和必要的 XMLHTTP h对象Q且几乎所?Web 服务器技术均可生?XMLQ或M标记Q,所以核?AJAX 技术普遍适用? <p>最单的 AJAX 应用E序实质上就是一个带?Javascript 函数的标?HTML 用户界面Q该界面可与能动态生?XML ?HTTP 服务器进行交互。Q何动?Web 技术(?CGI ?ServletQ以及本文稍后将谈到?JSFQ都可充当服务器?AJAX 技术?</p> <p>核心 AJAX 应用E序的主要组件包括: </p> <ul> <li>HTML 面Q其中包含: <ul> <li>?AJAX Javascript 函数交互?UI 元素 <li>?AJAX 服务器交互的 Javascript 函数 </li> </ul> <li>可处?HTTP hq以 XML 标记响应的服务器?Web 技术?</li> </ul> <p>q些元素如图 1 所C?/p> <p align=center><img alt="?1" src="http://www.oracle.com/technology/pub/images/schalk-ajax-f1.jpg"></p> <div align=center><strong>?1</strong> 核心 AJAX 体系l构 </div> <p>了解了关键元素后Q我们就可以设计一个包含输入域、按钮或M可链接至 Javascript 的元素的 HTML 用户界面了。例如,按下按钮可激zL?Javascript 函数Q或者更深入些,在用户向输入域键入内Ҏ可激zL?Javascript 函数。ؓ此,您可以将 onkeyup= 赋予 Javascript 函数的值来处理输入域中的数据。例如,当发?onkeyup 事gQ即键入内容Q时Q输入域“searchField”调?Javascript 函数 lookup( )?</p> <pre><input type="text" id="searchField" size="20" onkeyup="lookup('searchField');"> </pre> <p>除了响应用户界面交互Q例如键入)外,AJAX Javascript 函数q可Ҏ自己的计时器q行独立操作。(可以使用该方法执?AJAX <em>autosave</em>Q自动保存)Ҏ。) </p> <h2>如何发出 XML HTTP h<strong> </strong></h2> <p>现在Q我们来了解如何调用 AJAX Javascript 代码。请看以?Javascript 代码Q该代码可发Z?XML HTTP hQ?</p> <pre>if (window.XMLHttpRequest) { req = new XMLHttpRequest(); } else if (window.ActiveXObject) { req = new ActiveXObject("Microsoft.XMLHTTP"); } </pre> <p>利用该代码断Q主要的览器(Internet Explorer ?Mozilla/SafariQ都可向服务器发出独立的 HTTP h。该代码首先查浏览器是否支持上文提及的两个支持的 XMLHTTP 对象Q然后对其中之一q行实例化?</p> <p>一旦对 XMLHttpRequestQ或 Microsoft ?XMLHTTPQ进行了实例化,卛_以通过完全相同的方式对其进行操作?</p> <p>要初始化到服务器的连接,需使用以下 <tt>open</tt> ҎQ?</p> <pre>req.open("GET", url, true); </pre> <p>W一个参数是 HTTP ҎQ?tt>GET </tt>?<tt>POST</tt>Q。第二个参数是服务器Q或使用 POST 的表单操作)?URLQ第三个参数?<tt>true</tt>Q则表明可进行异步调用(“A”代表 AJAXQ。这意味着该浏览器可以在实现请求的同时l箋执行其他操作?tt>open</tt> Ҏ中若?<tt>false</tt> |则表明ؓ非异步处理或序处理。我们不如此Q这是因为您的浏览器会在q回响应前停止操作?</p> <p>使用 <tt>open</tt> 初始化连接后Q可q行 onreadystatechange 调用Q只适用于异步调用)。这注册一个回调函敎ͼ一旦请求完成就会调用该函数Q?</p> <pre> req.onreadystatechange = processXMLResponse; </pre> <p>在完成请求后Q将调用处理 XML 响应?processXMLResponse( ) 函数。可以通过 onreadystatechange 语句以内联方式声明回调函敎ͼ </p> <pre>req.onreadystatechange = processXMLResponse() { // process request }; </pre> <p>q可使用 req.setRequestHeader 指定M标题内容Q如Q?</p> <pre> req.setRequestHeader("Cookie", "someKey=true"); </pre> <p>一旦完全初始化?XMLHTTP h对象 (req)Q就可?send( ) 初始化对服务器的调用Q?</p> <pre>req.send(null); </pre> <p>对于 <tt>GET</tt> hQ?null 值或I字W串“”?</p> <p><tt>POST</tt> h包含一个带有表单数据的字符串参数。它们也要求在请求的标题中设|?Content-Type。以下两行演CZ如何执行 AJAX POST hQ?</p> <pre>req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"; req.send("name=scott&email=stiger@foocorp.com"); </pre> <p>完成h后调用的回调函数通常h保h不会发生错误的代码。这可通过?readyState 以及 HTTP h的整?tt>状?/tt>来实现。(readystate ?4 表示 XMLHTTP h<tt>完整</tt>Q?200 表示h<tt>成功</tt>Q?04 含义正好相反Q?</p> <pre>function processXMLResponse() { if (req.readyState == 4) { if (request.status != 200) { // Process the XML response } } } </pre> <p>XML 响应的处理是通过使用标准 Javascript DOM Ҏ完成的。例如,要从输入?XML 中抽取员工姓名Q?</p> <pre><employee> Chris </employee> </pre> <p>您可以用以下代码: </p> <pre>var name = req.responseXML.getElementsByTagName("employee")[0]; </pre> <p>分析更ؓ复杂?XML 会用如下代码P代元素: </p> <pre>for (i=0;i<elements.length;i++) { for (j=0;j<elements[i].childNodes.length;j++) { var ElementData = elements[i].childNodes[j].firstChild.nodeValue; } } </pre> <h2>l合使用 XMLHttpRequest ?HTML</h2> <p>h意,通过 XMLHttpRequest 获得 XML 响应无需L格式良好和有效。因此,AJAX 服务器端lg可以直接?HTML 内容发送至客户端。然后,JavaScript 可?req.responseText Ҏ/属性(它只是将内容作ؓ字符串进行检索)索该 HTML 内容。可以用该 HTML 字符串文本以M方式更改面。例如,对于以下 HTML :</p> <pre><h2>Hello there!</h2><br> <p> This is <b>HTML</b></p> </pre> <p>可用以下语句检索至一个字W串中:</p> <pre>var HTMLcontent = req.responseText; </pre> <p>之后通过 id="div1" dx定的 HTML DIV?/p> <pre>document.getElementById("div1").innerHTML += HTMLcontent; </pre> <p> <h2>JSF 如何支持 AJAX<strong> </strong></h2> <p>JSF 及其以组件ؓ中心的体pȝ构通过允许 JSF lg全权处理 Javascript 和嵌入式 AJAX“g”解决?AJAX 的固有难题。JSF 面作者甚x需x客户端与服务器之间的 AJAX 交互。它们只需像用其?JSF lg那样使用支持 AJAX ?JSF lg卛_Q而且感觉更好。JSF ?AJAX 的结合用前途光明! </p> <p>保持xQ?/p> <img src ="http://www.aygfsteel.com/simie/aggbug/127665.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/simie/" target="_blank">和田?/a> 2007-07-02 19:55 <a href="http://www.aygfsteel.com/simie/archive/2007/07/02/127665.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <a href="http://www.aygfsteel.com/" title="狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频">狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频</a> </div> </footer> վ֩ģ壺 <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ƽ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ɽʡ</a>| <a href="http://" target="_blank">˺</a>| <a href="http://" target="_blank">̳</a>| <a href="http://" target="_blank">ͨ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">Դ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">Ϫ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">̨</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">Ȩ</a>| <a href="http://" target="_blank">ˮ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ɽ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">³</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ɳ</a>| <a href="http://" target="_blank">ݸ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ʲ</a>| <a href="http://" target="_blank">ɽ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">书</a>| <a href="http://" target="_blank">찲</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ػ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ٲ</a>| <a href="http://" 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>