﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-世事如棋-文章分类-AJAX和web2.0</title><link>http://www.blogjava.net/kingwell/category/8838.html</link><description>Aspire to Professionalism</description><language>zh-cn</language><lastBuildDate>Wed, 28 Feb 2007 21:00:52 GMT</lastBuildDate><pubDate>Wed, 28 Feb 2007 21:00:52 GMT</pubDate><ttl>60</ttl><item><title>一个简单的ajax实例</title><link>http://www.blogjava.net/kingwell/articles/39091.html</link><dc:creator>KingWell</dc:creator><author>KingWell</author><pubDate>Tue, 04 Apr 2006 01:54:00 GMT</pubDate><guid>http://www.blogjava.net/kingwell/articles/39091.html</guid><wfw:comment>http://www.blogjava.net/kingwell/comments/39091.html</wfw:comment><comments>http://www.blogjava.net/kingwell/articles/39091.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/kingwell/comments/commentRss/39091.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/kingwell/services/trackbacks/39091.html</trackback:ping><description><![CDATA[
		<div>去年开始看AJAX时候所写的第一个小程序，整理了下。应该算AJAX最简单的应用了。</div>
		<div> </div>
		<div>首先，演示一下实际运行的<a href="http://www.jsfchina.org/pages/ajax/ajax.html">效果</a>。点击弹出新页面中的“See Author”链接，你将会看到该页面作者。从页面提交到显示从服务器获得的结果，这段过程你将不会发现页面的重刷新。</div>
		<div>下面给出该示例的代码：</div>
		<div>1. ajax.html</div>
		<div style="FONT-SIZE: 80%; OVERFLOW: auto; WIDTH: 80%; COLOR: #ffffff; BACKGROUND-COLOR: #999999">&lt;html&gt;<br />&lt;head&gt;<br />&lt;meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"&gt;<br />&lt;title&gt;A simple AJAX example&lt;/title&gt;<br />&lt;script type="text/javascript"&gt;&lt;!--<br />  function findAuthor(file){<br />     var xmlObj = null;<br />     if(window.XMLHttpRequest){<br />        xmlObj = new XMLHttpRequest();<br />     } else if(window.ActiveXObject){<br />         xmlObj = new ActiveXObject("Microsoft.XMLHTTP");<br />     } else {<br />      return;<br />    }<br />    xmlObj.onreadystatechange = function(){<br />       if(xmlObj.readyState == 4){<br />           updateObj('author', <br />        xmlObj.responseXML.getElementsByTagName('name')[0].firstChild.data);<br />       }<br />     }<br />    xmlObj.open ('GET', file, true);<br />    xmlObj.send ('');<br />  }<br />  function updateObj(obj, data){<br />   var textNode = document.createTextNode(data);<br />   document.getElementById(obj).appendChild(textNode);<br />  }<br />  //--&gt;&lt;/script&gt;<br />&lt;/head&gt;<br />&lt;body&gt;<br />&lt;h1&gt;A simple AJAX program&lt;/h1&gt;<br />&lt;p id="obj"&gt;This page is powered by &lt;a id='link' href="data.xml"<br /> title="View the author."<br /> onclick="findAuthor('data.xml'); this.style.display='none'; return false"&gt;See<br />Author.&lt;/a&gt;&lt;span id="author" style="color: olive; font-weight: bolder"&gt;&lt;/span&gt;&lt;/p&gt;<br />&lt;/body&gt;<br />&lt;/html&gt;</div>
		<p> </p>
		<p>2.data.xml</p>
		<div style="FONT-SIZE: 80%; OVERFLOW: auto; WIDTH: 80%; COLOR: #ffffff; BACKGROUND-COLOR: #999999">&lt;?xml version="1.0" encoding="UTF-8"?&gt;<br />&lt;author&gt;<br /> &lt;name&gt;www.jsfchina.org&lt;/name&gt;<br />&lt;/author&gt;</div>
		<p> </p>
		<p>解析下。</p>
		<p>该例应该算是最简单的ajax应用了。为了尽求简单性，这里没有使用到任何服务器端技术，诸如servlet,cgi等等。这里并没有使用到任何业务方法，而是直接从服务器的一个xml文档(data.xml)中读取数据。为了简洁性，本例将JavaScript文件也集成到了ajax.html中，实际应用中完全可以独立出去使用。</p>
		<p>该例通过点击链接，激发了一个javascript的方法然后进行交互处理。</p>
		<p>AJAX的核心是XMLHttpRequest，本例通过下列代码创建这个对象</p>
		<div style="FONT-SIZE: 80%; OVERFLOW: auto; WIDTH: 80%; COLOR: #ffffff; BACKGROUND-COLOR: #999999">  var xmlObj = null;<br />  if(window.XMLHttpRequest){<br />      xmlObj = new XMLHttpRequest();<br />  } else if(window.ActiveXObject){<br />      xmlObj = new ActiveXObject("Microsoft.XMLHTTP");<br />  } else {<br />      return;<br />  }</div>
		<p>if(window.XMLHttpRequest)处理了浏览器是mozilla的情况，而if(window.ActiveXObject)则处理了浏览器为IE的情况，目的都是一个：创建了一个XMLHttpRequest对象。创建这个对象的目的就是让XMLHttpRequest对象与服务器交互，而不影响用户正在浏览的页面。这也是AJAX称谓的由来，异步javascript交互xml处理。</p>
		<p>创建好XMLHttpRequest对象之后，调用的函数将会监听该对象状态的变化，即onreadystatechange属性。XMLHttpRequest对象有5个状态，从0－4的整数，也就是说onreadystatechange调用的函数（示例中function(){...}）将会执行4次。示例中我们在该对象处于完成状态(readyState=4)时进行处理（此时服务器已经传回所有信息），为id为“author”的span对象添加了一个textNode节点，该textNode是data.xml文档中name节点的第一个子元素的值。</p>
		<p>好了，这就是完成一次异步交互所需要的步骤。</p>
		<p>以下是一些注意点。</p>
		<p>第一，本例中使用的http的GET方法，你也可以使用POST，但是要设定Content-Type值，即xmlObj.setRequestHeader("Content-Type","application/x-www-form-urlencoded")，这个方法用来设置了MIME类型。还有一点要注意，这些方法最好都大写，否则在firefox下将没有作用。</p>
		<p>第二，xmlObj.open ('GET', file, true)。该方法会建立与服务器的链接，‘GET’指明了http调用方法；file指明了调用的url；true指明了该调用是异步处理，可以省略，默认为'true'。</p>
		<p>第三，xmlObj.send(para)向服务器发出请求。是以POST向服务器发出request，其参数格式为:name=namevalue&amp;so=on。（参考注意点一）</p>
		<p> </p>转贴注明出处<a href="http://www.jsfchina.org/"><u>www.jsfchina.org</u></a><img src ="http://www.blogjava.net/kingwell/aggbug/39091.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/kingwell/" target="_blank">KingWell</a> 2006-04-04 09:54 <a href="http://www.blogjava.net/kingwell/articles/39091.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>