<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
<channel>
<title><![CDATA[风之相随'S BLOG - AJAX XML]]></title>
<link>http://www.windsfly.cn/blog/</link>
<description><![CDATA[做我所想，想我所做，做最好的自己。（Do my think，think my do，do best of myself。）]]></description>
<language>zh-cn</language>
<copyright><![CDATA[Copyright 2005 PBlog2 v2.4]]></copyright>
<webMaster><![CDATA[sf223cn@yahoo.com.cn(风之相随)]]></webMaster>
<generator>PBlog2 v2.4</generator> 
<image>
	<title>风之相随&#39;S BLOG</title> 
	<url>http://www.windsfly.cn/blog/images/logos.gif</url> 
	<link>http://www.windsfly.cn/blog/</link> 
	<description>风之相随&#39;S BLOG</description> 
</image>

			<item>
			<link>http://www.windsfly.cn/blog/default.asp?id=1375</link>
			<title><![CDATA[ajax无刷新投票，IE下正常调用]]></title>
			<author>sf223cn@yahoo.com.cn(admin)</author>
			<category><![CDATA[AJAX XML]]></category>
			<pubDate>Sun,08 Feb 2009 13:20:15 +0800</pubDate>
			<guid>http://www.windsfly.cn/blog/default.asp?id=1375</guid>	
		<description><![CDATA[自己写的ajax无刷新投票，IE下正常调用~~ <br/><br/>投票页面 <br/><div class="UBBPanel"><div class="UBBTitle"><img src="http://www.windsfly.cn/blog/images/code.gif" style="margin:0px 2px -3px 0px" alt="程序代码"/> 程序代码</div><div class="UBBContent">&lt;div class=sround style=&#34;height:175px;width:190px;&#34;&gt; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;img src=&#34;img/nav.gif&#34; style=&#34;margin-top:1px;&#34;&gt; &lt;b&gt;调查投票&lt;/b&gt; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;div style=&#34;margin-left:10px;&#34;&gt; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;form name=vot_frm action=&#34;vote.asp&#34; method=&#34;get&#34; target=&#34;_blank&#34; style=&#34;text-justify:;height:100px&#34;&gt; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;您对本站的印象如何?&lt;br&gt; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;input name=vote type=radio value=1 style=&#34;border:0px&#34;&gt;很好(共&lt;font color=red&gt;&lt;span id=s1&gt;&lt;/span&gt;&lt;/font&gt;票)&lt;br&gt; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;input name=vote type=radio value=2 style=&#34;border:0px&#34;&gt;还可以(共&lt;font color=red&gt;&lt;span id=s2&gt;&lt;/span&gt;&lt;/font&gt;票)&lt;br&gt; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;input name=vote type=radio value=3 checked=true style=&#34;border:0px&#34;&gt;一般(共&lt;font color=red&gt;&lt;span id=s3&gt;&lt;/span&gt;&lt;/font&gt;票)&lt;br&gt; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;input name=vote type=radio value=4 style=&#34;border:0px&#34;&gt;不好(共&lt;font color=red&gt;&lt;span id=s4&gt;&lt;/span&gt;&lt;/font&gt;票)&lt;br&gt; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;input name=vote type=radio value=5 style=&#34;border:0px&#34;&gt;很差(共&lt;font color=red&gt;&lt;span id=s5&gt;&lt;/span&gt;&lt;/font&gt;票)&lt;br&gt; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;input type=button onclick=&#34;Star(this.form,1);&#34; value=&#34;投票&#34;&gt; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/form&gt; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/div&gt; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/div&gt; <br/>&lt;script type=&#34;text/javascript&#34;&gt; <br/>//无刷新投票 <br/>Star(document.vot_frm,0); <br/>var oBao; <br/>//创建组件 <br/>function cr&#101;ateobj() { <br/> if (window.ActiveXObject) { <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; oBao=new ActiveXObject(&#34;Microsoft.XMLHTTP&#34;); <br/>&nbsp;&nbsp;&nbsp;&nbsp; } <br/>&nbsp;&nbsp;&nbsp;&nbsp; else if (window.XMLHttpRequest) { <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; oBao=new XMLHttpRequest(); <br/>&nbsp;&nbsp;&nbsp;&nbsp; } <br/>} <br/>//调用并返回结果 <br/>function Star(frm,ty) { <br/>cr&#101;ateobj(); <br/>var id=0; <br/>if(ty==1) { <br/>for(var i=0;i&lt;frm.length;i++){ <br/>if(frm.elements.checked) { <br/>id=frm.elements.value; <br/>} <br/>} <br/>} <br/>var my_url=&#34;vote.asp?vote=&#34;+id; <br/>oBao.open(&#34;POST&#34;,my_url,false);&nbsp;&nbsp;<br/>oBao.send(null);&nbsp;&nbsp;<br/>var strResult = unescape(oBao.responseText); <br/>for(var j=1;j&lt;6;j++){ <br/>document.getElementById(&#34;s&#34;+j).innerText =strResult.split(&#34; &#34;)[j-1]; <br/>} <br/>} <br/>//定时刷新 <br/>window.setInterval(&#34;Star(document.vot_frm,0);&#34;,5000); <br/>&lt;/script&gt;</div></div> <br/><br/>vote.asp的内容<br/><div class="UBBPanel"><div class="UBBTitle"><img src="http://www.windsfly.cn/blog/images/code.gif" style="margin:0px 2px -3px 0px" alt="程序代码"/> 程序代码</div><div class="UBBContent">&lt;!--#include file=&#34;mdb.asp&#34;--&gt; &#39;连接你自己的数据库，最好根据自己的数据库重新写下面的代码~~ <br/>&lt;% <br/>dim n <br/>n=&#34;&#34; <br/>if request.querystring(&#34;vote&#34;)&lt;&gt;&#34;&#34; o&#114; request.querystring(&#34;vote&#34;)&gt;0 then <br/>sql=&#34;up&#100;ate vote set count=count+1 wh&#101;re vote=&#39;vote&#34;&amp;request.querystring(&#34;vote&#34;)&amp;&#34;&#39;&#34; <br/>conn.execute sql <br/>end if <br/>set rs=server.cr&#101;ateobject(&#34;adodb.recordset&#34;) <br/>sql=&#34;sel&#101;ct * from vote&#34; <br/>rs.open sql,conn,1,1 <br/>do while not rs.eof <br/>n=n&amp;&#34; &#34;&amp;rs(1) <br/>rs.movenext <br/>loop <br/>response.write trim(n) <br/>%&gt;</div></div>]]></description>
		</item>
		
			<item>
			<link>http://www.windsfly.cn/blog/default.asp?id=1374</link>
			<title><![CDATA[一段重用很高的ajax代码]]></title>
			<author>sf223cn@yahoo.com.cn(admin)</author>
			<category><![CDATA[AJAX XML]]></category>
			<pubDate>Sun,08 Feb 2009 13:17:58 +0800</pubDate>
			<guid>http://www.windsfly.cn/blog/default.asp?id=1374</guid>	
		<description><![CDATA[一段重用很高的ajax代码，可以套用<br/><div class="UBBPanel"><div class="UBBTitle"><img src="http://www.windsfly.cn/blog/images/code.gif" style="margin:0px 2px -3px 0px" alt="程序代码"/> 程序代码</div><div class="UBBContent">&lt;!DOCTYPE HTML PUBLIC &#34;-//W3C//DTD HTML 4.01 Transitional//EN&#34;&gt; <br/>&lt;html&gt; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;head&gt; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;title&gt;client.html&lt;/title&gt; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;script language=&#34;JavaScript&#34; type=&#34;text/javascript&#34;&gt; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var xmlreq = false; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// ---------------初始化XMLHttpRequest-------------------- <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;function cr&#101;ateXMLHttpRequest(){ <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (window.XMLHttpRequest) { <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//不是ie浏览器 <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xmlreq = new XMLHttpRequest(); <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (window.ActiveXObject) { <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//IE <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;try { <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xmlreq = new ActiveXObject(&#34;Msxml12.XMLHTTP&#34;); <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;catch (e1) { <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;try { <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;req = new ActiveXObject(&#34;Microsoft.XMLHTTP&#34;); <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;catch (e2) { <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// Unable to cr&#101;ate an XMLHttpRequest with ActiveX <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} <br/>//------------发送XMLHttpRequest请求----------------- <br/>//GET提交请求 <br/>function sendRequestGet(url){ <br/>cr&#101;ateXMLHttpRequest(); <br/>xmlreq.open(&#34;get&#34;,url,true); <br/>xmlreq.onreadystatechange = processResponse;//响应请求函数 <br/>xmlreq.send(null); <br/>} <br/>//POST提交请求 <br/>function sendRequestPost(url,param){ <br/>cr&#101;ateXMLHttpRequest(); <br/>xmlreq.open(&#34;post&#34;,url,true); <br/>xmlreq.onreadystatechange = processResponse;//响应请求的函数 <br/>xmlreq.setRequestHeader(&#34;Content-Type&#34;, &#34;application/x-www-form-urlencoded&#34;); <br/>xmlreq.send(param); <br/>} <br/>function sendRequest(url,param,method){ <br/>if(method){ <br/>if (method.toLowerCase(&#34;get&#34;)) { <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sendRequestGet(url + &#34;?&#34; + param); <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (method.toLowerCase(&#34;post&#34;)) { <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sendRequestPost(url, param); <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} <br/>}else{ <br/>alert(&#34;method is null&#34;); <br/>} <br/>} <br/>//---------响应请求的函数------------ <br/>function processResponse(){ <br/>if(xmlreq.readyState == 4){ <br/>if(xmlreq.status == 200){ <br/>alert(xmlreq.responseText); <br/>}else{ <br/>alert(&#34;发送失败！&#34;) <br/>} <br/>} <br/>} <br/>//事件响应 <br/>function submitRequest(){ <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var form1 = document.getElementById(&#34;form1&#34;); <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var url = form1.action; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var username = form1.username.value; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var password = form1.password.value; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var method = form1.method; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var param = &#34;username=&#34; + username + &#34;&amp;password=&#34; + password; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sendRequest(url, param, method); <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/script&gt; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;/head&gt; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;body&gt; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;form action=&#34;server.jsp&#34; method=&#34;post&#34; name=&#34;form1&#34; id=&#34;form1&#34;&gt; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 用户名:&lt;input name=&#34;username&#34; id=&#34;username&#34; type=&#34;text&#34;&gt; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;br&gt; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 密&nbsp;&nbsp;码:&lt;input name=&#34;password&#34; id=&#34;password&#34; type=&#34;text&#34;&gt; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;br&gt; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;input type=&#34;button&#34; value=&#34;发送信息&#34; onclick=&#34;submitRequest()&#34;&gt; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/form&gt; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;/body&gt; <br/>&lt;/html&gt;</div></div>]]></description>
		</item>
		
			<item>
			<link>http://www.windsfly.cn/blog/default.asp?id=1373</link>
			<title><![CDATA[使用Ajax进行用户名有效性验证]]></title>
			<author>sf223cn@yahoo.com.cn(admin)</author>
			<category><![CDATA[AJAX XML]]></category>
			<pubDate>Sun,08 Feb 2009 13:15:43 +0800</pubDate>
			<guid>http://www.windsfly.cn/blog/default.asp?id=1373</guid>	
		<description><![CDATA[用户名有效性验证，是会员注册必须的步骤，下面一步步介绍如何使用Ajax进行有效性验证<br/><br/>一、用户请求页<br/>&nbsp;&nbsp; 新建一个页面reg.html,如下代码<br/><br/><div class="UBBPanel"><div class="UBBTitle"><img src="http://www.windsfly.cn/blog/images/code.gif" style="margin:0px 2px -3px 0px" alt="程序代码"/> 程序代码</div><div class="UBBContent">&lt;!DOCTYPE html PUBLIC &#34;-//W3C//DTD XHTML 1.0 Transitional//EN&#34; &#34;<a href="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" target="_blank">http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd</a>&#34;&gt;<br/>&lt;html xmlns=&#34;<a href="http://www.w3.org/1999/xhtml" target="_blank">http://www.w3.org/1999/xhtml</a>&#34; &gt;<br/>&lt;head&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;title&gt;Ajax范例---用户名有效性验证&lt;/title&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;script type=&#34;text/javascript&#34; src=&#34;custom.js&#34;&gt;&lt;/script&gt;<br/>&lt;/head&gt;<br/>&lt;body&gt;<br/>&lt;h3&gt;Ajax范例---用户名有效性验证&lt;/h3&gt;<br/><br/>输入用户名:<br/>&lt;input tye=&#34;text&#34; id=&#34;username&#34; name=&#34;username&#34; /&gt;<br/>&lt;input type=&#34;button&#34; value=&#34;验证用户名&#34; onclick=&#34;return test();&#34; /&gt;&lt;br /&gt;&lt;br /&gt;<br/>&lt;span id=&#34;result&#34;&gt;&lt;/span&gt;<br/>&lt;/body&gt;<br/>&lt;/html&gt;</div></div><br/><br/>二、Javascript发送请求代码<br/>新建文件custom.js(Javascript代码) 代码如下<br/><br/><div class="UBBPanel"><div class="UBBTitle"><img src="http://www.windsfly.cn/blog/images/code.gif" style="margin:0px 2px -3px 0px" alt="程序代码"/> 程序代码</div><div class="UBBContent">/*<br/>Ajax范例<br/>By Anlige<br/>zhanghuiguoanlige@126.com<br/>*/<br/>//自定义函数,获取标签对象<br/>&nbsp;&nbsp;&nbsp;&nbsp;function $(id){<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return document.getElementById(id);<br/>&nbsp;&nbsp;&nbsp;&nbsp;}<br/>//创建组件<br/>&nbsp;&nbsp;&nbsp;&nbsp;function cr&#101;ateObject(){<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var Request=null;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (window.ActiveXObject) {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Request= new ActiveXObject(&#34;Microsoft.XMLHTTP&#34;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}else if (window.XMLHttpRequest) {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Request= new XMLHttpRequest();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (Request.overrideMimeType) {//设置MiME 类别<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Request.overrideMimeType(&#34;text/xml&#34;); <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return Request;<br/>&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;function test(){<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var username=$(&#34;username&#34;).value; //获取表单值<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(username==&#34;&#34;){alert(&#34;请输入用户名&#34;);return false};<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$(&#34;result&#34;).innerText=&#34;验证中...&#34;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//创建一个组件<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var myRequest=cr&#101;ateObject();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;//直接附加到url后面的数据总是以get方式提交,地址里面的rnd参数仅仅是为了防止缓存(有人习惯用日期来防止缓存)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var url=&#34;test.asp?rnd=&#34; + Math.random();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//要post方式提交的数据,作为send方法的参数<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var data=&#34;username=&#34; + username; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//调用open方法: 使用POST方式提交;&nbsp;&nbsp;提交到url;&nbsp;&nbsp;true代表启用异步.<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;myRequest.open(&#34;Post&#34;,url,true); <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//Post方式提交必须加这句,并且要在调用post方法后才能加,否则会提示&#34;未知错误&#34;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;myRequest.setRequestHeader(&#34;Content-Type&#34;, &#34;application/x-www-form-urlencoded&#34;);&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//设置响应函数<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;myRequest.onreadystatechange =function(){<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(myRequest.readyState==4){&nbsp;&nbsp; //如果为说明数据发送成功,并返回<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(myRequest.status==200){&nbsp;&nbsp;//如果为,说明正常状态;404为未找到页面;500为服务器错误<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var msg=myRequest.responseText;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(msg==&#34;no&#34;){<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$(&#34;result&#34;).innerText=&#34;本用户名未被使用,您可以注册！&#34;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}else{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$(&#34;result&#34;).innerText=&#34;本用户名已被占用,请选择其他用户名！&#34;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;};<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//调用send方法发送数据<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;myRequest.send(data);<br/>&nbsp;&nbsp;&nbsp;&nbsp;}</div></div><br/><br/>三、后台验证代码<br/>新建文件test.asp(后台验证代码),本文件编码为utf-8(用记事本打开--另存为utf-8格式--覆盖原文件即可)<br/><br/><div class="UBBPanel"><div class="UBBTitle"><img src="http://www.windsfly.cn/blog/images/code.gif" style="margin:0px 2px -3px 0px" alt="程序代码"/> 程序代码</div><div class="UBBContent">&lt;%@ LANGUAGE=&#34;VBScript&#34;%&gt; <br/>&lt;% <br/>response.charset=&#34;utf-8&#34;&nbsp;&nbsp; &#39;字符编码为utf-8<br/>dim names,username,isHas<br/>names=&#34;admin|anlige|admin888&#34;&nbsp;&nbsp; &#39;模拟一个数据库<br/>names=split(names,&#34;|&#34;)<br/>username=request.form(&#34;username&#34;)&nbsp;&nbsp;&#39;因为Ajax是post的数据，这里用form集合<br/>isHas=&#34;no&#34;<br/>for i=0 to ubound(names)<br/>&nbsp;&nbsp;&nbsp;&nbsp;if names(i)=username then<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;isHas=&#34;yes&#34;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;exit for<br/>&nbsp;&nbsp;&nbsp;&nbsp;end if<br/>next<br/>response.write isHas&nbsp;&nbsp;&#39;输出验证结果<br/>%&gt;</div></div> <br/>&nbsp;&nbsp;&nbsp;&nbsp;这样，模拟用户注册过程中的&#34;用户名有效性验证&#34;就完成了；<br/>&nbsp;&nbsp;&nbsp;&nbsp;测试方法:浏览器中打开reg.html,输入一个用户名进行验证,如果输入 admin,anlige,admin888三个中的任何一个都会提示已经被注册。改实例修改test.asp后完全可以移植到原用户验证系统 ]]></description>
		</item>
		
			<item>
			<link>http://www.windsfly.cn/blog/default.asp?id=1189</link>
			<title><![CDATA[用AJAX编写用户注册时的应用实例]]></title>
			<author>sf223cn@yahoo.com.cn(admin)</author>
			<category><![CDATA[AJAX XML]]></category>
			<pubDate>Wed,03 Dec 2008 22:04:51 +0800</pubDate>
			<guid>http://www.windsfly.cn/blog/default.asp?id=1189</guid>	
		<description><![CDATA[我所举的这个例子是一个企业用户注册时的一个应用，当用户注册时检查用户名和企业名是否可用，以前的做法是在旁边加一个按钮，点击“检查”，就向服务器发出请求，然后等待……服务器返回信息，继续操作。<br/><br/>如果我们用AJAX技术来实现以上的操作则不必等待服务器返回信息，用户输入用户名或企业名称的时候，当输入文本框失去焦点的时候，则会自动向服务器发出请求，用户继续做下面的操作，不必点击“检查”，也不必等待服务器返回信息，检查与用户操作是异步的，可同时进行。当服务器信息返回的时候，会自动在面页相应位置显示返回信息，不必刷新页面，相当于局部刷新的效果。 下面我们来看代码吧。<br/><br/>HTML页面的完整代码如下：<br/><br/><div class="UBBPanel"><div class="UBBTitle"><img src="http://www.windsfly.cn/blog/images/code.gif" style="margin:0px 2px -3px 0px" alt="程序代码"/> 程序代码</div><div class="UBBContent">&lt;%@page language=&#34;java&#34; contentType=&#34;text/html;charset=GBK&#34;%&gt;<br/>&lt;script language=&#34;javascript&#34; type=&#34;text/javascript&#34;&gt;<br/>&lt;!--<br/>/**//**Ajax 开始 by Alpha 2005-12-31*/<br/><br/> var http = getHTTPObject();<br/><br/> function handleHttpResponse(){<br/> 　if(http.readyState == 4){<br/> 　if(http.status == 200){<br/> 　　var xmlDocument = http.responseXML;<br/> 　　　if(http.responseText!=&#34;&#34;){<br/> 　　　　document.getElementById(&#34;showStr&#34;).style.display = &#34;&#34;;<br/> 　　　　　document.getElementById(&#34;userName&#34;).style.background= &#34;#FF0000&#34;;<br/> 　　　　　document.getElementById(&#34;showStr&#34;).innerText = http.responseText;<br/> 　　　}else{<br/> 　　　　document.getElementById(&#34;userName&#34;).style.background= &#34;#FFFFFF&#34;;<br/> 　　　　document.getElementById(&#34;showStr&#34;).style.display = &#34;none&#34;;<br/> 　　　}<br/> <br/> 　　}<br/> 　　else{<br/> 　　　alert(&#34;你所请求的页面发生异常，可能会影响你浏览该页的信息！&#34;);<br/> 　　　alert(http.status);<br/> 　　}<br/> 　}<br/> }<br/><br/> function handleHttpResponse1(){<br/> 　if(http.readyState == 4){<br/> 　　if(http.status == 200){<br/> 　　　var xmlDocument = http.responseXML;<br/> 　　　if(http.responseText!=&#34;&#34;){<br/> 　　　　document.getElementById(&#34;comNmStr&#34;).style.display = &#34;&#34;;<br/> 　　　　document.getElementById(&#34;comNm&#34;).style.background= &#34;#FF0000&#34;;<br/> 　　　　document.getElementById(&#34;comNmStr&#34;).innerText = http.responseText;<br/> 　　　}else{<br/> 　　　　document.getElementById(&#34;comNm&#34;).style.background= &#34;#FFFFFF&#34;;<br/> 　　　　document.getElementById(&#34;comNmStr&#34;).style.display = &#34;none&#34;;<br/> 　　　}<br/> <br/> 　　}<br/> 　　else{<br/> 　　　alert(&#34;你所请求的页面发生异常，可能会影响你浏览该页的信息！&#34;);<br/> 　　　alert(http.status);<br/> 　　}<br/> 　}<br/> }<br/><br/> function chkUser(){<br/> 　var url = &#34;/chkUserAndCom&#34;;<br/> 　var name = document.getElementById(&#34;userName&#34;).value;<br/> 　url += (&#34;&amp;userName=&#34;+name+&#34;&amp;oprate=chkUser&#34;);<br/> 　http.open(&#34;GET&#34;,url,true);<br/> 　http.onreadystatechange = handleHttpResponse;<br/> 　http.send(null);<br/> 　return ;<br/> }<br/> function chkComNm(){<br/> 　var url = &#34;/chkUserAndCom&#34;;<br/> 　var name = document.getElementById(&#34;comNm&#34;).value;<br/> 　url += (&#34;&amp;comName=&#34;+name+&#34;&amp;oprate=chkCom&#34;);<br/> 　http.open(&#34;GET&#34;,url,true);<br/> 　http.onreadystatechange = handleHttpResponse1;<br/> 　http.send(null);<br/> 　return ;<br/> }<br/> <br/> //该函数可以创建我们需要的XMLHttpRequest对象<br/> function getHTTPObject(){<br/> 　var xmlhttp = false;<br/> 　if(window.XMLHttpRequest){<br/> 　　xmlhttp = new XMLHttpRequest();<br/> 　　if(xmlhttp.overrideMimeType){<br/> 　　　xmlhttp.overrideMimeType(&#39;text/xml&#39;);<br/> 　　}<br/> 　}<br/> 　else{<br/> 　　try{<br/> 　　　xmlhttp = new ActiveXObject(&#34;Msxml2.XMLHTTP&#34;);<br/> 　　}catch(e){<br/> 　　　try{<br/> 　　　　xmlhttp = new ActiveXObject(&#34;Microsoft.XMLHTTP&#34;);<br/> 　　　}catch(E){<br/> 　　　　xmlhttp = false;<br/> 　　　}<br/> 　　}<br/> 　}<br/> 　return xmlhttp;<br/> }<br/>/**//**Ajax 结束*/<br/><br/>//检测表单<br/>function chkpassword()<br/>{<br/> var m=document.form1;<br/> if(len(m.password.value) &gt; 20 || len(m.password.value) &lt; 5 || !isStr(m.password.value))<br/> {<br/> 　document.getElementById(&#34;passwordStr&#34;).style.display = &#34;&#34;;<br/>　 document.getElementById(&#34;password&#34;).style.background= &#34;#FF0000&#34;;<br/>　 document.getElementById(&#34;passwordStr&#34;).innerText = &#34;对不起,密码必须为英文字母、数字或下划线，长度为5~20!&#34;;<br/> }<br/> else<br/> {<br/>　 document.getElementById(&#34;password&#34;).style.background= &#34;#FFFFFF&#34;;<br/>　 document.getElementById(&#34;passwordStr&#34;).style.display = &#34;none&#34;;<br/> }<br/>}<br/><br/>function chkconfirmPassword()<br/>{<br/>　 var m=document.form1;<br/>　 if (m.password.value != m.confirmPassword.value)<br/>　 {<br/>　　 document.getElementById(&#34;confirmPasswordStr&#34;).style.display = &#34;&#34;;<br/>　　 document.getElementById(&#34;confirmPassword&#34;).style.background= &#34;#FF0000&#34;;<br/>　　 document.getElementById(&#34;confirmPasswordStr&#34;).innerText = &#34;对不起,密码与重复密码不一致!&#34;;<br/>　 }<br/>　 else<br/>　 {<br/>　　 document.getElementById(&#34;confirmPassword&#34;).style.background= &#34;#FFFFFF&#34;;<br/>　　 document.getElementById(&#34;confirmPasswordStr&#34;).style.display = &#34;none&#34;;<br/>　 }<br/>}<br/><br/>function checkfield()<br/>{<br/> var m=document.form1; <br/> if(m.userName.value.length==0)<br/> {<br/>　 alert(&#34;对不起,用户名必须为英文字母、数字或下划线，长度为5~20。&#34;);<br/>　 m.userName.focus();<br/>　 return false;<br/> }<br/> if(m.password.value.length==0)<br/> {<br/>　 alert(&#34;对不起,密码必须为英文字母、数字或下划线，长度为5~20。&#34;);<br/>　 m.password.focus();<br/>　 return false;<br/> }<br/> if (m.password.value != m.confirmPassword.value)<br/> {<br/>　 alert(&#34;对不起,密码与重复密码不一致!&#34;);<br/>　 m.confirmPassword.focus();<br/>　 return false;<br/> } <br/> if(m.comNm.value.length==0)<br/> {<br/>　 alert(&#34;对不起,企业名称不能为空！！&#34;);<br/>　 m.comNm.focus();<br/>　 return false; <br/> }<br/> m.submit();<br/>}<br/><br/>//--&gt; <br/>&lt;/script&gt;<br/>&lt;body topmargin=&#34;0&#34;&gt;<br/>&lt;form name=&#34;form1&#34; method=&#34;post&#34; action=&#34;/Control?act=Register&#34;&gt;<br/>&lt;table width=&#34;100%&#34;&gt;<br/> &lt;tr&gt;&lt;td align=&#34;center&#34;&gt;&amp;nbsp;&lt;H2&gt;Ajax 演示程序&lt;/H1&gt;&lt;/td&gt;&lt;/tr&gt;<br/> &lt;tr&gt;&lt;td align=&#34;center&#34;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;------ 企业注册 By Alpha&lt;/td&gt;&lt;/tr&gt;<br/>&lt;/table&gt;<br/><br/>&lt;HR&gt;<br/> &lt;table width=&#34;400&#34; border=&#34;0&#34; cellpadding=&#34;1&#34; cellspacing=&#34;1&#34; align=&#34;center&#34; &gt;<br/> &lt;tr&gt;<br/>　 &lt;td&gt;&lt;font color=&#34;red&#34;&gt;*&lt;/font&gt;&lt;/td&gt;<br/>　 &lt;td&gt;用户帐号:&lt;/td&gt;<br/>　 &lt;td&gt;<br/>　　 &lt;input type=&#34;text&#34; name=&#34;userName&#34; maxlength=&#34;20&#34; style=&#34;background:#FFFFFF&#34; onBlur=&#34;chkUser()&#34; value=&#34;&#34;/&gt;<br/>　　 &lt;div id=&#34;showStr&#34; style=&#34;background-color:#FF9900;display:none&#34;&gt;&lt;/div&gt;<br/>　 &lt;/td&gt; <br/> &lt;/tr&gt;<br/> &lt;tr&gt;<br/>　 &lt;td&gt;&lt;font color=&#34;red&#34;&gt;*&lt;/font&gt;&lt;/td&gt;<br/>　 &lt;td&gt;企业名称:&lt;/td&gt;<br/>　 &lt;td&gt;<br/>　　 &lt;input type=&#34;text&#34; name=&#34;comNm&#34; maxlength=&#34;100&#34; style=&#34;background:#FFFFFF&#34; onBlur=&#34;chkComNm()&#34; value=&#34;&#34;/&gt;<br/>　　 &lt;div id=&#34;comNmStr&#34; style=&#34;background-color:#FF9900;display:none&#34;&gt;&lt;/div&gt;<br/> <br/>　 &lt;/td&gt; <br/> &lt;/tr&gt; <br/> &lt;tr&gt;<br/>　 &lt;td&gt;&lt;font color=&#34;red&#34;&gt;*&lt;/font&gt;&lt;/td&gt;<br/>　 &lt;td&gt;用户密码:&lt;/td&gt;<br/>　 &lt;td&gt;&lt;input type=&#34;password&#34; name=&#34;password&#34; maxlength=&#34;20&#34; style=&#34;background:#FFFFFF&#34; onBlur=&#34;chkpassword()&#34;/&gt;<br/>　　 &lt;div id=&#34;passwordStr&#34; style=&#34;background-color:#FF9900;display:none&#34;&gt;&lt;/div&gt;<br/>　 &lt;/td&gt;<br/> &lt;/tr&gt;<br/> &lt;tr&gt;<br/>　 &lt;td&gt;&lt;font color=&#34;red&#34;&gt;*&lt;/font&gt;&lt;/td&gt;<br/>　 &lt;td&gt;确认密码:&lt;/td&gt;<br/>　 &lt;td&gt;&lt;input type=&#34;password&#34; name=&#34;confirmPassword&#34; maxlength=&#34;20&#34; style=&#34;background:#FFFFFF&#34; onBlur=&#34;chkconfirmPassword()&#34;/&gt;<br/>　　 &lt;div id=&#34;confirmPasswordStr&#34; style=&#34;background-color:#FF9900;display:none&#34;&gt;&lt;/div&gt;<br/>　 &lt;/td&gt; <br/> &lt;/tr&gt;<br/> &lt;/table&gt; <br/><br/> &lt;div align=&#34;center&#34;&gt; <br/>　 &lt;input type=&#34;button&#34; name=&#34;ok&#34; value=&#34; 确 定 &#34; onclick=&#34;checkfield()&#34;&gt;&amp;nbsp;&lt;input type=&#34;reset&#34; name=&#34;reset&#34; value=&#34; 取 消 &#34;&gt;<br/> &lt;/div&gt;<br/><br/>&lt;/form&gt;<br/>&lt;/body&gt;<br/>&lt;/html&gt;</div></div> <br/><br/>　　用JavaScript来创建XmlHttpRequest 类向服务器发送一个HTTP请求后，接下来要决定当收到服务器的响应后，需要做什么。这需要告诉HTTP请求对象用哪一个JavaScript函数处理这个响应。可以将对象的onreadystatechange属性设置为要使用的JavaScript的函数名，如下所示:Xmlhttp_request.onreadystatechange =FunctionName;<br/><br/>　　FunctionName是用JavaScript创建的函数名，注意不要写成FunctionName()，当然我们也可以直接将JavaScript代码创建在onreadystatechange之后。<br/><br/>　　我们调用request.open()-它用服务器打开套接字频道，使用一个HTTP动词(GET或POST)作为第一个参数并且以数据提供者的URL作为第二个参数。request.open()的最后一个参数被设置为true-它指示该请求的异步特性。注意，该请求还没有被提交。随着对request.send()的调用，开始提交-这可以为POST提供任何必要的有效载荷。在使用异步请求时，我们必须使用request.onreadystatechanged属性来分配请求的回调函数。(如果请求是同步的话，我们应该能够在调用request.send之后立即处理结果，但是我们也有可能阻断用户，直到该请求完成为止。)<br/><br/>　　再看看数据提供者的URL，url = &#34;/chkUserAndCom&#34;，servlet如下：<br/><br/><div class="UBBPanel"><div class="UBBTitle"><img src="http://www.windsfly.cn/blog/images/code.gif" style="margin:0px 2px -3px 0px" alt="程序代码"/> 程序代码</div><div class="UBBContent">/**//*<br/> * Cr&#101;ated on 2005-12-31<br/> *<br/> * TODO To change the template for this generated file go to<br/> * Window - Preferences - Java - Code Style - Code Templates<br/> */<br/>package com.event;<br/><br/>import javax.servlet.ServletException;<br/>import javax.servlet.http.HttpServletRequest;<br/>import javax.servlet.http.HttpServletResponse;<br/><br/>import com.beans.EBaseInfo;<br/><br/>/** *//**<br/> * @author Alpha 2005-12-31<br/> * <br/> * ＜P＞Ajax 演示---企业注册时检查企业用户名和企业名称＜/P＞<br/> *<br/> * TODO To change the template for this generated type comment go to<br/> * Window - Preferences - Java - Code Style - Code Templates<br/> */<br/>public class CheckUserAndComNm {<br/> private String msgStr = &#34;&#34;;<br/> protected void doGet(HttpServletRequest request,HttpServletResponse response) <br/> throws ServletException <br/> { <br/><br/> 　EComBaseInfo info=new EComBaseInfo();<br/>　String oprate=request.getParameter(&#34;oprate&#34;)).trim(); <br/> 　String userName=request.getParameter(&#34;userName&#34;);<br/> 　String passWord=request.getParameter(&#34;password&#34;);<br/> 　String comName=request.getParameter(&#34;comName&#34;);<br/> <br/> 　try<br/> 　{<br/> 　　if(oprate.equals(&#34;chkUser&#34;))<br/> 　　{<br/> 　　　response.setContentType(&#34;text/html;charset=GB2312&#34;);<br/> 　　　if(userName.length()＜5||userName.length()＞20)<br/> 　　　{<br/> 　　　　msgStr = &#34;对不起,用户名必须为字母、数字或下划线，长度为5-20个字符!&#34;;<br/> 　　　}<br/> 　　　else<br/> 　　　{<br/> 　　　　boolean bTmp=info.findUser(userName); //找查数据库中有无该用户名<br/> 　　　　if(bTmp) <br/> 　　　　　msgStr =&#34;对不起,此用户名已经存在,请更换用户名注册!&#34;;<br/> 　　　　else<br/> 　　　　　msgStr =&#34;&#34;;<br/> 　　　}<br/> 　　　response.getWriter().write(msgStr);<br/> 　　}<br/> 　　else if(oprate.equals(&#34;chkCom&#34;))<br/> 　　{<br/>　　　response.setContentType(&#34;text/html;charset=GB2312&#34;);<br/> 　　　if(comName.length()＜6||comName.length()＞100)<br/> 　　　{<br/> 　　　　msgStr = &#34;对不起,公司名称长度为6-100个字符(不包括字符内的空格)!&#34;;<br/> 　　　}<br/> 　　　else<br/> 　　　{<br/> 　　　　boolean bTmp=info.findCom(comName); //找查数据库中有无该企业名<br/> 　　　　if(bTmp) <br/> 　　　　　msgStr =&#34;对不起,此企业名称已经存在,请更换企业名称注册!&#34;;<br/> 　　　　else<br/> 　　　　　msgStr =&#34;&#34;;<br/> 　　　}<br/>　　　response.getWriter().write(msgStr);<br/> 　　<br/> 　　}<br/> 　}<br/> 　catch(Exception ex)<br/> 　{<br/> 　}<br/> 　finally<br/> 　{<br/> 　　request.setAttribute(&#34;url&#34;,url);<br/> 　}<br/> }<br/><br/> protected void doPost(HttpServletRequest request,HttpServletResponse response) <br/> throws ServletException <br/> {<br/> 　doGet(request,response);<br/> }<br/>}</div></div><br/><br/><strong>AJAX技术小结</strong><br/><br/>1. AJAX(Asynchronous JavaScript and Xml)是一个结合了Java技术、Xml、以及JavaScript的编程技术，可以让你构建基于Java技术的Web应用，并打破了使用页面重载的惯例。<br/><br/>2. AJAX，异步JavaScript与Xml，是使用客户端脚本与Web服务器交换数据的Web应用开发方法。这样，Web页面不用打断交互流程进行重新加裁，就可以动态地更新。使用AJAX，你可以创建接近本地桌面应用的，直接的、高可用的、更丰富的、更动态的Web用户接口界面。<br/><br/>3. 对于Mozilla.Netscape﹑Safari、Firefox等浏览器，创建XmlHttpRequest 方法如下：<br/><br/>Xmlhttp_request = new XmlHttpRequest();<br/><br/>4. IE等创建XmlHttpRequest 方法如下：<br/><br/>Xmlhttp = new ActiveXObject(&#34;MsXml2.XmlHTTP&#34;)　或　Xmlhttp = new ActiveXObject(&#34;Microsoft.XmlHTTP&#34;);<br/><br/>5. Xmlhttp_request.open(&#39;GET&#39;, URL, true); Xmlhttp_request.send(null);<br/><br/>6. open()的第一个参数是HTTP请求方式—GET，POST或任何服务器所支持的您想调用的方式。 按照HTTP规范，该参数要大写;否则，某些浏览器(如Firefox)可能无法处理请求。第二个参数是请求页面的URL。第三个参数设置请求是否为异步模式。如果是TRUE，JavaScript函数将继续执行，而不等待服务器响应。这就是&#34;AJAX&#34;中的&#34;A&#34;。<br/><br/>AJAX技术运用的好的话，给我们的网页增添了许多友好的效果，给用户还来更好的感觉。AJAX是个好东西。<br/>]]></description>
		</item>
		
			<item>
			<link>http://www.windsfly.cn/blog/default.asp?id=1188</link>
			<title><![CDATA[readyState的五种状态详解]]></title>
			<author>sf223cn@yahoo.com.cn(admin)</author>
			<category><![CDATA[AJAX XML]]></category>
			<pubDate>Wed,03 Dec 2008 22:00:50 +0800</pubDate>
			<guid>http://www.windsfly.cn/blog/default.asp?id=1188</guid>	
		<description><![CDATA[在《Pragmatic Ajax A Web 2.0 Primer 》中对readyStae状态的介绍，摘译如下：<br/><br/>0: (Uninitialized) the send( ) method has not yet been invoked. <br/>1: (Loading) the send( ) method has been invoked, request in progress. <br/>2: (Loaded) the send( ) method has completed, entire response received.<br/>3: (Interactive) the response is being parsed. <br/>4: (Completed) the response has been parsed, is ready for harvesting. <br/><br/>0 － （未初始化）还没有调用send()方法<br/>1 － （载入）已调用send()方法，正在发送请求<br/>2 － （载入完成）send()方法执行完成，已经接收到全部响应内容<br/>3 － （交互）正在解析响应内容<br/>4 － （完成）响应内容解析完成，可以在客户端调用了<br/>对于readyState的这五种状态，其他书中大都语焉不详。像《Foundations of Ajax》中，只在书中的表2-2简单地列举了状态的“名称”－－The state of the request. The five possible values are 0 = uninitialized, 1 = loading, 2 = loaded, 3 = interactive, and 4 = complete。而《Ajax in Action》中好像根本就没有提到这5种状态的细节。<br/><br/>《Professional Ajax》中虽不尽人意，但还是有可取之处：<br/><br/>There are five possible values for readyState: <br/>0 (Uninitialized): The object has been cr&#101;ated but the open() method hasn’t been called. <br/>1 (Loading): The open() method has been called but the request hasn’t been sent. <br/>2 (Loaded): The request has been sent. <br/>3 (Interactive). A partial response has been received. <br/>4 (Complete): All data has been received and the connection has been closed. <br/>readyState有五种可能的值：<br/><br/>0 (未初始化)： (XMLHttpRequest)对象已经创建，但还没有调用open()方法。<br/>1 (载入)：已经调用open() 方法，但尚未发送请求。<br/>2 (载入完成)： 请求已经发送完成。<br/>3 (交互)：可以接收到部分响应数据。<br/>4 (完成)：已经接收到了全部数据，并且连接已经关闭。<br/><br/>在《Understanding AJAX: Using JavaScript to Cr&#101;ate Rich Internet Applications》中，则用下表进行了说明：<br/><br/>readyState Status Code<br/>Status of the XMLHttpRequest Object <br/><br/>(0) UNINITIALIZED&nbsp;&nbsp;未初始化 <br/>The object has been cr&#101;ated but not initialized. (The open method has not been called.)<br/>（XMLHttpRequest）对象已经创建，但尚未初始化（还没有调用open方法）。 <br/><br/>(1) LOADING&nbsp;&nbsp;载入 <br/>The object has been cr&#101;ated, but the send method has not been called.<br/>（XMLHttpRequest）对象已经创建，但尚未调用send方法。 <br/><br/>(2) LOADED&nbsp;&nbsp;载入完成 <br/>The send method has been called, but the status and headers are not yet available.<br/>已经调用send方法，（HTTP响应）状态及头部还不可用。 <br/><br/>(3) INTERACTIVE&nbsp;&nbsp;交互 <br/>Some data has been received. Calling the responseBody and responseText properties at this state to obtain partial results will return an error, because status and response headers are not fully available.<br/>已经接收部分数据。但若在此时调用responseBody和responseText属性获取部分结果将会产生错误，因为状态和响应头部还不完全可用。 <br/><br/>(4) COMPLETED&nbsp;&nbsp;完成 <br/>All the data has been received, and the complete data is available in the responseBody and responseText properties.<br/>已经接收到了全部数据，并且在responseBody和responseText属性中可以提取到完整的数据。 <br/>根据以上几本书中的关于readyState五种状态的介绍，我认为还是《Pragmatic Ajax A Web 2.0 Primer 》比较到位，因为它提到了对接收到的数据的解析问题，其他书中都没有提到这一点，而这一点正是“(3)交互”阶段作为一个必要的转换过程存在于“(2)载入完成”到“(4)完成”之间的理由，也就是其任务是什么。归结起来，我觉得比较理想的解释方法应该以“状态：任务（目标）+过程+表现（或特征）”表达模式来对这几个状态进行定义比较准确，而且让人容易理解。<br/><br/>总结如下：<br/><br/>readyState 状态&nbsp;&nbsp;&nbsp;&nbsp;状态说明<br/><br/>(0)未初始化<br/>此阶段确认XMLHttpRequest对象是否创建，并为调用open()方法进行未初始化作好准备。值为0表示对象已经存在，否则浏览器会报错－－对象不存在。<br/><br/>(1)载入<br/>此阶段对XMLHttpRequest对象进行初始化，即调用open()方法，根据参数(method,url,true)完成对象状态的设置。并调用send()方法开始向服务端发送请求。值为1表示正在向服务端发送请求。<br/><br/>(2)载入完成<br/>此阶段接收服务器端的响应数据。但获得的还只是服务端响应的原始数据，并不能直接在客户端使用。值为2表示已经接收完全部响应数据。并为下一阶段对数据解析作好准备。<br/><br/>(3)交互<br/>此阶段解析接收到的服务器端响应数据。即根据服务器端响应头部返回的MIME类型把数据转换成能通过responseBody、responseText或responseXML属性存取的格式，为在客户端调用作好准备。状态3表示正在解析数据。<br/><br/>(4)完成<br/>此阶段确认全部数据都已经解析为客户端可用的格式，解析已经完成。值为4表示数据解析完毕，可以通过XMLHttpRequest对象的相应属性取得数据。<br/><br/>概而括之，整个XMLHttpRequest对象的生命周期应该包含如下阶段：<br/><br/>创建－初始化请求－发送请求－接收数据－解析数据－完成<br/><br/>在具体应用中，明确了readyState的五个状态（XMLHttpRequest对象的生命周期各个阶段）的含义，就可以消除对Ajax核心的神秘感（语焉不详的背后要么是故弄玄虚，制造神秘感；要么就是“以其昏昏，使人昭昭”），迅速把握其实质，对减少学习中的挫折感和增强自信心都极其有益。<br/><br/>比如，通过如下示例：<br/><br/><div class="UBBPanel"><div class="UBBTitle"><img src="http://www.windsfly.cn/blog/images/code.gif" style="margin:0px 2px -3px 0px" alt="程序代码"/> 程序代码</div><div class="UBBContent">//声明数组<br/>var states ＝ [&#34;正在初始化……&#34;, <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#34;正在初始化请求……成功！&lt;br/&gt;正在发送请求……&#34;, <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#34;成功！&lt;br/&gt;正在接收数据……&#34;, <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#34;完成！&lt;br/&gt;正在解析数据……&#34;, <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#34;完成！&lt;br/&gt;&#34;]; <br/><br/>//回调函数内部代码片段<br/>if (xmlHttp.readyState==4)<br/>{<br/>&nbsp;&nbsp; var span = document.cr&#101;ateElement(“span”);<br/>&nbsp;&nbsp; span.innerHTML = states[xmlHttp.readyState];<br/>&nbsp;&nbsp; document.body.appendChild(span);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/><br/>&nbsp;&nbsp; if (xmlHttp.status == 200)<br/>&nbsp;&nbsp; {<br/>&nbsp;&nbsp;&nbsp;&nbsp; var xmldoc = xmlHttp.responseXML;<br/>&nbsp;&nbsp;&nbsp;&nbsp; //其他代码<br/>&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;//别忘记销毁，防止内存泄漏<br/>&nbsp;&nbsp;&nbsp;&nbsp;xmlHttp = null;<br/>}<br/>else<br/>{<br/>&nbsp;&nbsp; var span = document.cr&#101;ateElement(“span”);<br/>&nbsp;&nbsp; span.innerHTML = states[xmlHttp.readyState];<br/>&nbsp;&nbsp; document.body.appendChild(span);<br/>}</div></div><br/>结果如下：<br/>正在初始化请求……成功！<br/>正在发送请求……成功！<br/>正在接收数据……完成！<br/>正在解析数据……完成！<br/>我们很容易明白XMLHttpRequest对象在各个阶段都在做什么。因此，也就很容易对Ajax的核心部分有一个真正简单明了的理解。<br/>附：<br/>Example 1<br/><br/>readyState&nbsp;&nbsp;返回XMLHTTP请求的当前状态<br/>语法&nbsp;&nbsp;lValue = oXMLHttpRequest.readyState;<br/><br/><div class="UBBPanel"><div class="UBBTitle"><img src="http://www.windsfly.cn/blog/images/code.gif" style="margin:0px 2px -3px 0px" alt="程序代码"/> 程序代码</div><div class="UBBContent">var XmlHttp;<br/>XmlHttp = new ActiveXObject(&#34;Msxml2.XMLHTTP.3.0&#34;);<br/><br/>function send() {<br/>&nbsp;&nbsp; XmlHttp.onreadystatechange = doHttpReadyStateChange;<br/>&nbsp;&nbsp; XmlHttp.open(&#34;GET&#34;, &#34;<a href="http://localhost/sample.xml" target="_blank">http://localhost/sample.xml</a>&#34;, true);<br/>&nbsp;&nbsp; XmlHttp.send();<br/>}<br/><br/>function doHttpReadyStateChange() {<br/>&nbsp;&nbsp; if (XmlHttp.readyState == 4) {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert(&#34;Done&#34;);<br/>&nbsp;&nbsp; }<br/>}</div></div><br/>备注&nbsp;&nbsp;变量，此属性只读，状态用长度为4的整型表示.定义如下：<br/><br/>0 (未初始化) 对象已建立，但是尚未初始化（尚未调用open方法） <br/>1 (初始化) 对象已建立，尚未调用send方法 <br/>2 (发送数据) send方法已调用，但是当前的状态及http头未知 <br/>3 (数据传送中) 已接收部分数据，因为响应及http头不全，这时通过responseBody和responseText获取部分数据会出现错误， <br/>4 (完成) 数据接收完毕,此时可以通过通过responseBody和responseText获取完整的回应数据 <br/><br/>Example 2<br/><br/>下面这个范例说明如何在运行时以 VBScript 代码读取 RDS.DataControl 对象的 ReadyState 属性。ReadyState 为只读属性。<br/>要测试该范例，请剪切该代码并粘贴到标准 HTML 文档的 &lt;Body&gt;&lt;/Body&gt; 标记之间，然后将其命名为“ADCapi9.asp”，ASP 脚本将标识服务器。 <br/><br/><div class="UBBPanel"><div class="UBBTitle"><img src="http://www.windsfly.cn/blog/images/code.gif" style="margin:0px 2px -3px 0px" alt="程序代码"/> 程序代码</div><div class="UBBContent">&lt;Center&gt;<br/>&lt;H2&gt;RDS API Code Examples &lt;/H2&gt;<br/>&lt;HR&gt;<br/>&lt;H3&gt; RDS.DataControl ReadyState property&lt;/H3&gt;<br/>&lt;/Center&gt;<br/>&lt;!-- 在运行时设置参数的 RDS.DataControl --&gt;<br/>&lt;OBJECT classid=&#34;clsid:BD96C556-65A3-11D0-983A-00C04FC29E33&#34;<br/>&nbsp;&nbsp; ID=ADC&gt;<br/>&nbsp;&nbsp; &lt;PARAM NAME=&#34;SQL&#34; VALUE=&#34;Sel&#101;ct * from Employee for browse&#34;&gt;<br/>&nbsp;&nbsp; &lt;PARAM NAME=&#34;SERVER&#34; VALUE=&#34;<a href="http://" target="_blank">http://</a>&lt;%=Request.ServerVariables(&#34;SERVER_NAME&#34;)%&gt;&#34;&gt;<br/>&nbsp;&nbsp; &lt;PARAM NAME=&#34;CONNECT&#34; VALUE=&#34;dsn=ADCDemo;UID=ADCDemo;PWD=ADCDemo;&#34;&gt; <br/>&lt;PARAM NAME=&#34;ExecuteOptions&#34; VALUE=&#34;adcExecAsync&#34;&gt; <br/>&lt;PARAM NAME=&#34;FetchOptions&#34; VALUE=&#34;adcFetchAsync&#34;&gt;<br/>&lt;/OBJECT&gt;<br/>&lt;Script Language=&#34;VBScript&#34;&gt;<br/>Sub Window_OnLoad<br/>Sel&#101;ct Case ADC1.ReadyState<br/>&nbsp;&nbsp; case 2: MsgBox &#34;Executing Query&#34;<br/>&nbsp;&nbsp; case 3: MsgBox &#34;Fetching records in background&#34;<br/>&nbsp;&nbsp; case 4: MsgBox &#34;All records fetched&#34;<br/>End Sel&#101;ct<br/>End Sub<br/>&lt;/Script&gt;</div></div><br/>]]></description>
		</item>
		
			<item>
			<link>http://www.windsfly.cn/blog/default.asp?id=1187</link>
			<title><![CDATA[ASP+AJAX做类似google的搜索提示]]></title>
			<author>sf223cn@yahoo.com.cn(admin)</author>
			<category><![CDATA[AJAX XML]]></category>
			<pubDate>Wed,03 Dec 2008 21:56:19 +0800</pubDate>
			<guid>http://www.windsfly.cn/blog/default.asp?id=1187</guid>	
		<description><![CDATA[<strong>主要要文件有: </strong><br/><br/>Index.html 实现功能,一个文本框,输入内容并实现提示 <br/><br/>search.asp 查询功能,让文本框输入的内容在数据库中查询,然后返回给客户端 <br/><br/>conn.asp 数据库连接功能,实现与数据库相连 xmlhttp.js AJAX 核心部分,用来把客户端的数据传给服务端,再把服务端的数据返还给客户端. <br/><br/>style.css 样式文件,主要是对google提示框查询到的内容进行样式化处理 <br/><br/>先看第一个文件style.css <br/><br/><div class="UBBPanel"><div class="UBBTitle"><img src="http://www.windsfly.cn/blog/images/code.gif" style="margin:0px 2px -3px 0px" alt="程序代码"/> 程序代码</div><div class="UBBContent">@charset &#34;utf-8&#34;; <br/>/* CSS Document */ <br/><br/>body <br/>{ <br/>font-size:12px; <br/>font-family:Arial, Helvetica, sans-serif; <br/>} <br/><br/>#search_suggest <br/>{ <br/>position:absolute; <br/>background:#FFFFFF; <br/>text-align:left; <br/>border:1px #000000 solid; <br/>} <br/><br/>.suggest_link_over <br/>{ <br/>background-color:#e8f2fe; <br/>padding:2px 6px; <br/>} <br/>.suggest_link <br/>{ <br/>padding:2px 6px; <br/>background-color:#FFFFFF; <br/>} <br/>.none <br/>{ <br/>display:none; <br/>} </div></div><br/><br/>第二个文件: xmlhttp.js <br/><br/><div class="UBBPanel"><div class="UBBTitle"><img src="http://www.windsfly.cn/blog/images/code.gif" style="margin:0px 2px -3px 0px" alt="程序代码"/> 程序代码</div><div class="UBBContent">// JavaScript Documentrt <br/>var xmlHttp = cr&#101;ateXmlHttpRequest(); <br/>function cr&#101;ateXmlHttpRequest() <br/>{ <br/>var xmlhttp = null; <br/>try <br/>{ <br/>xmlhttp = XMLHttpRequest(); <br/>} <br/>catch(e1) <br/>{ <br/>try <br/>{ <br/>xmlhttp = new ActiveXObject(&#34;MSXML2.XMLHTTP&#34;); <br/>} <br/>catch(e2) <br/>{ <br/>try <br/>{ <br/>xmlhttp = new ActiveXObject(&#34;Microsoft.XMLHTTP&#34;); <br/>} <br/>catch(e3) <br/>{ <br/>xmlhttp = false; <br/>alert(&#34;创建失败!&#34;); <br/>} <br/>} <br/>} <br/>return xmlhttp; <br/>} <br/><br/>function change_key() <br/>{ <br/>if (xmlHttp.readyState == 4 || xmlHttp.readyState == 0) <br/>{ <br/>var str = document.getElementById(&#34;txt_key&#34;).value; <br/><br/>xmlHttp.open(&#34;get&#34;,&#34;search.asp?key=&#34; + str ,true); <br/>xmlHttp.onreadystatechange = handSearchRequest;&nbsp;&nbsp;<br/>xmlHttp.send(null); <br/>} <br/>} <br/><br/>function handSearchRequest() <br/>{ <br/>if (xmlHttp.readyState == 4) <br/>{ <br/>var div = document.getElementById(&#34;search_suggest&#34;); <br/>div.innerHTML = &#34;&#34;; <br/>var str = xmlHttp.responseText.split(&#34;|&#34;); <br/><br/>for (var i=0; i&lt;str.length; i++) <br/>{ <br/>var suggest = ’&lt;div onmouseover=&#34;javascript：suggestOver(this);&#34; ’; <br/>suggest += ’onmouseout=&#34;javascript：suggestOut(this);&#34; ’; <br/>suggest += ’onclick=&#34;javascript：setSearch(this.innerHTML);&#34; ’; <br/>suggest += ’class=&#34;suggest_link&#34;&gt;’ + str[i] + ’&lt;/div&gt;’; <br/>div.innerHTML += suggest; <br/>} <br/>} <br/>} <br/><br/>function setSearch(div_value) <br/>{ <br/>document.getElementById(&#34;txt_key&#34;).value = div_value; <br/>document.getElementById(&#34;search_suggest&#34;).className = ’none’; <br/>} <br/>function suggestOver(div_value) <br/>{ <br/>div_value.className = ’suggest_link_over’; <br/>} <br/><br/>function suggestOut(div_value) <br/>{ <br/>div_value.className = ’suggest_link’; <br/>}</div></div>&nbsp;&nbsp;<br/><br/>第三个文件:conn.asp <br/><br/><div class="UBBPanel"><div class="UBBTitle"><img src="http://www.windsfly.cn/blog/images/code.gif" style="margin:0px 2px -3px 0px" alt="程序代码"/> 程序代码</div><div class="UBBContent">&lt;% <br/>set conn = Server.Cr&#101;ateObject(&#34;Adodb.Connection&#34;) <br/>connStr = &#34;Provider=SQLOLEDB;Server=.\SQLEXPRESS;UID=sa;PWD=sa;Initial catalog=test;&#34; <br/>conn.ConnectionString = connStr <br/>conn.open <br/>%&gt;</div></div> <br/><br/>第四个文件:search.asp <br/><br/><div class="UBBPanel"><div class="UBBTitle"><img src="http://www.windsfly.cn/blog/images/code.gif" style="margin:0px 2px -3px 0px" alt="程序代码"/> 程序代码</div><div class="UBBContent">&lt;%@LANGUAGE=&#34;VBSCRIPT&#34; CODEPAGE=&#34;65001&#34;%&gt; <br/>&lt;!-- #include file=&#34;conn.asp&#34; --&gt; <br/>&lt;%key = request.QueryString(&#34;key&#34;) <br/><br/>if (key &lt;&gt; &#34;&#34;) then <br/>key = replace(key,&#34;\&#34;,&#34;&#34;) <br/>key = replace(key,&#34;’&#34;,&#34;&#34;) <br/>key = replace(key,&#34;or&#34;,&#34;&#34;)&nbsp;&nbsp;<br/>sel_sql = &#34;sel&#101;ct [key] from [key] wh&#101;re [key] like ’&#34; &amp; key &amp; &#34;%’&#34; <br/>dim keyword <br/>keyword = &#34;&#34; <br/><br/>set rs = conn.execute (sel_sql) <br/>do while not rs.eof <br/>keyword = keyword &amp; rs(0) &amp; &#34;|&#34; <br/>rs.movenext <br/>loop <br/><br/>response.Write(keyword) <br/>end if <br/>%&gt;</div></div> <br/><br/>最后一个结果文件:index.html <br/><br/><div class="UBBPanel"><div class="UBBTitle"><img src="http://www.windsfly.cn/blog/images/code.gif" style="margin:0px 2px -3px 0px" alt="程序代码"/> 程序代码</div><div class="UBBContent">&lt;!DOCTYPE html PUBLIC &#34;-//W3C//DTD XHTML 1.0 Transitional//EN&#34; &#34;<a href="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" target="_blank">http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd</a>&#34;&gt; <br/>&lt;html xmlns=&#34;<a href="http://www.w3.org/1999/xhtml" target="_blank">http://www.w3.org/1999/xhtml</a>&#34;&gt; <br/>&lt;head&gt; <br/>&lt;meta http-equiv=&#34;Content-Type&#34; content=&#34;text/html; charset=utf-8&#34; /&gt; <br/>&lt;title&gt;google提示&nbsp;&nbsp;&lt;/title&gt; <br/>&lt;script src=&#34;xmlhttp.js&#34; &gt;&lt;/script&gt; <br/>&lt;link rel=&#34;stylesheet&#34; type=&#34;text/css&#34; href=&#34;style.css&#34;&gt; <br/>&lt;/head&gt; <br/>&lt;body&gt; <br/>&lt;form id=&#34;form1&#34; name=&#34;form1&#34; method=&#34;post&#34; action=&#34;&#34;&gt; <br/>&lt;input name=&#34;txt_key&#34; type=&#34;text&#34; id=&#34;textarea&#34; autocomplete=&#34;off&#34; onkeyup=&#34;change_key()&#34;/&gt;&lt;br/&gt; <br/>&lt;div id=&#34;search_suggest&#34; &gt;&lt;/div&gt; <br/>&lt;/form&gt; <br/>&lt;/body&gt; <br/>&lt;/html&gt;</div></div><br/>]]></description>
		</item>
		
			<item>
			<link>http://www.windsfly.cn/blog/default.asp?id=1186</link>
			<title><![CDATA[AJAX POST的使用实例(PHP)]]></title>
			<author>sf223cn@yahoo.com.cn(admin)</author>
			<category><![CDATA[AJAX XML]]></category>
			<pubDate>Wed,03 Dec 2008 21:45:13 +0800</pubDate>
			<guid>http://www.windsfly.cn/blog/default.asp?id=1186</guid>	
		<description><![CDATA[AJAX POST的使用实例 @ 2008-12-3 晚上调试成功<br/>ajax.html<br/><div class="UBBPanel"><div class="UBBTitle"><img src="http://www.windsfly.cn/blog/images/code.gif" style="margin:0px 2px -3px 0px" alt="程序代码"/> 程序代码</div><div class="UBBContent">&lt;!DOCTYPE html PUBLIC &#34;-//W3C//DTD XHTML 1.0 Transitional//EN&#34; &#34;<a href="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" target="_blank">http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd</a>&#34;&gt;<br/>&lt;html xmlns=&#34;<a href="http://www.w3.org/1999/xhtml" target="_blank">http://www.w3.org/1999/xhtml</a>&#34;&gt;<br/>&lt;head&gt;<br/>&lt;meta http-equiv=&#34;Content-Type&#34; content=&#34;text/html; charset=gb2312&#34; /&gt;<br/>&lt;title&gt;兼容多浏览器的AJAX入门实例（超详细注释）&lt;/title&gt;<br/>&lt;script type=&#34;text/javascript&#34;&gt;<br/>&lt;!--<br/>//Ajax是建立在XMLHttp组件下的技术，本例详细语法参考压缩包内xmlhttp手册<br/>var xmlHttp<br/>//建立XMLHTTP对象调用MS的ActiveXObject方法，如果成功（IE浏览器）则使用MS ActiveX实例化创建一个XMLHTTP对象 非IE则转用建立一个本地Javascript对象的XMLHttp对象（此方法确保不同浏览器下对AJAX的支持）<br/>function cr&#101;ateXMLHttp(){<br/>if(window.XMLHttpRequest){ // Mozilla 浏览器<br/>xmlHttp = new XMLHttpRequest();<br/>}else if (window.ActiveXObject){ // IE 浏览器<br/>try{<br/>xmlHttp = new ActiveXObject(&#34;Msxml2.XMLHTTP&#34;);<br/>}catch(e){<br/>try{<br/>xmlHttp = new ActiveXObject(&#34;Microsoft.XMLHTTP&#34;);<br/>}catch(e){}<br/>}<br/>}<br/>}<br/><br/><br/>//建立主过程<br/>function startXMLHttp(){<br/>&nbsp;&nbsp;&nbsp;&nbsp;cr&#101;ateXMLHttp(); //建立xmlHttp 对象<br/> var send_string=&#34;name=&#34;+document.getElementById(&#34;name&#34;).value;<br/> send_string= encodeURI(send_string)<br/>// alert(document.getElementById(&#34;text&#34;).value);<br/>// return;<br/>&nbsp;&nbsp;&nbsp;&nbsp;xmlHttp.onreadystatechange =dodo; //xmlHttp下的onreadystatechange方法控制传送过程<br/>&nbsp;&nbsp;&nbsp;&nbsp;xmlHttp.open(&#34;post&#34;,&#34;ajax_show.php&#34;,true); //传送方式 读取的页面 异步与否<br/>// xmlHttp.setRequestHeader(&#34;cache-control&#34;,&#34;no-cache&#34;);<br/>&nbsp;&nbsp; xmlHttp.setRequestHeader(&#34;Content-Type&#34;,&#34;application/x-www-form-urlencoded&#34;); <br/>&nbsp;&nbsp;&nbsp;&nbsp;xmlHttp.send(send_string); //发送<br/>}<br/><br/>function dodo(){<br/>&nbsp;&nbsp;&nbsp;&nbsp;if(xmlHttp.readystate==4){ // xmlHttp下的readystate方法 4表示传送完毕<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(xmlHttp.status==200){ // xmlHttp的status方法读取状态（服务器HTTP状态码） 200对应OK 404对应Not Found（未找到）等<br/>&nbsp;&nbsp;&nbsp;&nbsp; document.getElementById(&#34;content&#34;).innerHTML=xmlHttp.responseText //xmlHttp的responseText方法 得到读取页数据<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br/>&nbsp;&nbsp;&nbsp;&nbsp;<br/>}<br/><br/>}<br/>--&gt;<br/>&lt;/script&gt;<br/>&lt;/head&gt;<br/><br/>&lt;body&gt;<br/>&lt;span id=&#34;content&#34;&gt;要替换的内容&lt;/span&gt;&lt;br&gt;<br/>&lt;input type=&#34;button&#34; onclick=&#34;javascript:startXMLHttp()&#34; value=&#34;AJAX获取&#34;/&gt;<br/>&lt;form id=&#34;form1&#34; name=&#34;form1&#34; method=&#34;post&#34; action=&#34;&#34;&gt;<br/>&nbsp;&nbsp;&lt;label&gt;<br/>&nbsp;&nbsp;&lt;input type=&#34;text&#34; name=&#34;name&#34; id=&#34;name&#34; /&gt;<br/>&nbsp;&nbsp;&lt;/label&gt;<br/>&lt;/form&gt;<br/>&lt;/body&gt;<br/>&lt;/html&gt;</div></div><br/><br/>ajax_show.php<br/><div class="UBBPanel"><div class="UBBTitle"><img src="http://www.windsfly.cn/blog/images/code.gif" style="margin:0px 2px -3px 0px" alt="程序代码"/> 程序代码</div><div class="UBBContent">&lt;?php<br/>$content = isset($_POST[&#39;name&#39;]) ? $_POST[&#39;name&#39;] : &#39;&#39;;<br/>echo $content;<br/>?&gt;</div></div>]]></description>
		</item>
		
			<item>
			<link>http://www.windsfly.cn/blog/default.asp?id=1185</link>
			<title><![CDATA[Ajax表单验证用户名是否存在]]></title>
			<author>sf223cn@yahoo.com.cn(admin)</author>
			<category><![CDATA[AJAX XML]]></category>
			<pubDate>Wed,03 Dec 2008 21:25:22 +0800</pubDate>
			<guid>http://www.windsfly.cn/blog/default.asp?id=1185</guid>	
		<description><![CDATA[做一个表单验证里面最简单的例子，检查用户名是否存在，使用Ajax完成表单验证的正常步骤应该是：<br/><br/>客户端收集表单信息。 <br/>使用XMLHttpRequest对象提交到服务器。 <br/>服务器完成验证的逻辑，返回结果信息。 <br/>浏览器端根据服务器返回的信息对用户做出一定的提示。 <br/>不过由于我的空间不支持任何服务器段语言，所以把本应在服务器的逻辑搬到了浏览器，由JavaScript来做，服务器只负责提供一个用户名的列表。最后的效果如下，试着输入test，cainiao8这些用户名，都会显示已注册。<br/><br/><strong>JavaScript代码分析</strong><br/>首先，当文档载入完毕的时候，给表格设置change事件的响应函数ajaxValidate，代码如下：<br/><br/><div class="UBBPanel"><div class="UBBTitle"><img src="http://www.windsfly.cn/blog/images/code.gif" style="margin:0px 2px -3px 0px" alt="程序代码"/> 程序代码</div><div class="UBBContent">addEventSimple(window,&#39;load&#39;,function(){<br/>&#160;&#160;&#160;&#160;var test = document.getElementById(&#39;username&#39;);<br/>&#160;&#160;&#160;&#160;addEventSimple(test,&#39;change&#39;,ajaxValidate);<br/>}</div></div><br/>这样，当用户名文本框内的值改变之后，就会调用ajaxValidate函数，其代码如下：<br/><br/><div class="UBBPanel"><div class="UBBTitle"><img src="http://www.windsfly.cn/blog/images/code.gif" style="margin:0px 2px -3px 0px" alt="程序代码"/> 程序代码</div><div class="UBBContent">function ajaxValidate(){<br/>&#160;&#160;&#160;&#160;var options = {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;url:&#39;ajax/ajaxUsernames.xml&#39;,<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;listener:callback,<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;method:&#39;GET&#39;<br/>&#160;&#160;&#160;&#160;}<br/>&#160;&#160;&#160;&#160;var request = cr&#101;ateRequest(options);<br/>&#160;&#160;&#160;&#160;request.send(null);<br/>}</div></div><br/>它会使用之前介绍的cr&#101;ateRequest函数初始化一个XMLHttpRequest对象，并且将它发送到服务器，请求ajaxUsernames.xml文件。<br/><br/>最后就是callback函数了：<br/><br/><div class="UBBPanel"><div class="UBBTitle"><img src="http://www.windsfly.cn/blog/images/code.gif" style="margin:0px 2px -3px 0px" alt="程序代码"/> 程序代码</div><div class="UBBContent">function callback(){<br/>&#160;&#160;&#160;&#160;var xmlDoc = this.responseXML;<br/>&#160;&#160;&#160;&#160;var root = xmlDoc.getElementsByTagName(&#39;root&#39;)[0];<br/>&#160;&#160;&#160;&#160;var nodes = root.getElementsByTagName(&#34;username&#34;);<br/>&#160;&#160;&#160;&#160;var currentNode = null;<br/>&#160;&#160;&#160;&#160;var username = document.getElementById(&#39;username&#39;).value;<br/>&#160;&#160;&#160;&#160;for(var i = 0; i &lt; nodes.length; i++) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;currentNode = nodes[i];<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if(username == currentNode.childNodes[0].nodeValue){<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;document.getElementById(&#39;test&#39;).innerHTML = &#39;对不起!&#39;+username+&#39;已经被注册。&#39;;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;return;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}<br/>&#160;&#160;&#160;&#160;}<br/>&#160;&#160;&#160;&#160;document.getElementById(&#39;test&#39;).innerHTML = &#39;用户名&#39; + username +&#39;可以使用!&#39;;<br/>}</div></div><br/>callback函数在已经存在的用户名搜索当前用户输入的名字，判断是否已经存在。<br/>]]></description>
		</item>
		
			<item>
			<link>http://www.windsfly.cn/blog/default.asp?id=1166</link>
			<title><![CDATA[建一个XMLHttpRequest对象池]]></title>
			<author>sf223cn@yahoo.com.cn(admin)</author>
			<category><![CDATA[AJAX XML]]></category>
			<pubDate>Mon,01 Dec 2008 14:21:49 +0800</pubDate>
			<guid>http://www.windsfly.cn/blog/default.asp?id=1166</guid>	
		<description><![CDATA[在ajax应用中，通常一个页面要同时发送多个请求，如果只有一个XMLHttpRequest对象，前面的请求还未完成，后面的就会把前面的覆盖掉，如果每次都创建一个新的XMLHttpRequest对象，也会造成浪费。解决的办法就是创建一个XMLHttpRequset的对象池，如果池里有空闲的对象，则使用此对象，否则将创建一个新的对象。<br/><br/>下面是我最近写的一个简单的类：<br/><br/><br/><div class="UBBPanel"><div class="UBBTitle"><img src="http://www.windsfly.cn/blog/images/code.gif" style="margin:0px 2px -3px 0px" alt="程序代码"/> 程序代码</div><div class="UBBContent">/**<br/> * XMLHttpRequest Object Pool<br/> *<br/> * @author&nbsp;&nbsp;&nbsp;&nbsp;legend &lt;legendsky@hotmail.com&gt;<br/> * @link&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="http://www.ugia.cn/?p=85" target="_blank">http://www.ugia.cn/?p=85</a><br/> * @Copyright www.ugia.cn<br/> */ <br/><br/>var XMLHttp = {<br/>&nbsp;&nbsp;&nbsp;&nbsp;_objPool: [],<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;_getInstance: function ()<br/>&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for (var i = 0; i &lt; this._objPool.length; i ++)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (this._objPool[i].readyState == 0 || this._objPool[i].readyState == 4)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return this._objPool[i];<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// IE5中不支持push方法<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this._objPool[this._objPool.length] = this._cr&#101;ateObj();<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return this._objPool[this._objPool.length - 1];<br/>&nbsp;&nbsp;&nbsp;&nbsp;},<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;_cr&#101;ateObj: function ()<br/>&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (window.XMLHttpRequest)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var objXMLHttp = new XMLHttpRequest();<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var MSXML = [&#39;MSXML2.XMLHTTP.5.0&#39;, &#39;MSXML2.XMLHTTP.4.0&#39;, &#39;MSXML2.XMLHTTP.3.0&#39;, &#39;MSXML2.XMLHTTP&#39;, &#39;Microsoft.XMLHTTP&#39;];<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for(var n = 0; n &lt; MSXML.length; n ++)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;try<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var objXMLHttp = new ActiveXObject(MSXML[n]);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;catch(e)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// mozilla某些版本没有readyState属性<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (objXMLHttp.readyState == null)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;objXMLHttp.readyState = 0;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;objXMLHttp.addEventListener(&#34;load&#34;, function ()<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;objXMLHttp.readyState = 4;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (typeof objXMLHttp.onreadystatechange == &#34;function&#34;)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;objXMLHttp.onreadystatechange();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},&nbsp;&nbsp;false);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return objXMLHttp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;},<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;// 发送请求(方法[post,get], 地址, 数据, 回调函数)<br/>&nbsp;&nbsp;&nbsp;&nbsp;sendReq: function (method, url, data, callback)<br/>&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var objXMLHttp = this._getInstance();<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;with(objXMLHttp)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;try<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// 加随机数防止缓存<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (url.indexOf(&#34;?&#34;) &gt; 0)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;url += &#34;&amp;randnum=&#34; + Math.random();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;url += &#34;?randnum=&#34; + Math.random();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;open(method, url, true);<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// 设定请求编码方式<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;setRequestHeader(&#39;Content-Type&#39;, &#39;application/x-www-form-urlencoded; charset=UTF-8&#39;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;send(data);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;onreadystatechange = function ()<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (objXMLHttp.readyState == 4 &amp;&amp; (objXMLHttp.status == 200 || objXMLHttp.status == 304))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;callback(objXMLHttp);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;catch(e)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert(e);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;}<br/>};</div></div>&nbsp;&nbsp;<br/><br/>示例： <br/><br/><div class="UBBPanel"><div class="UBBTitle"><img src="http://www.windsfly.cn/blog/images/code.gif" style="margin:0px 2px -3px 0px" alt="程序代码"/> 程序代码</div><div class="UBBContent">&lt;script type=&#34;text/javascript&#34; src=&#34;xmlhttp.js&#34;&gt;&lt;/script&gt;<br/>&lt;script type=&#34;text/javascript&#34;&gt;<br/>function test(obj)<br/>{<br/>&nbsp;&nbsp;&nbsp;&nbsp;alert(obj.statusText);<br/>}<br/><br/>XMLHttp.sendReq(&#39;GET&#39;, &#39;<a href="http://www.ugia.cn/wp-data/test.htm" target="_blank">http://www.ugia.cn/wp-data/test.htm</a>&#39;, &#39;&#39;, test);<br/>XMLHttp.sendReq(&#39;GET&#39;, &#39;<a href="http://www.ugia.cn/wp-data/test.htm" target="_blank">http://www.ugia.cn/wp-data/test.htm</a>&#39;, &#39;&#39;, test);<br/>XMLHttp.sendReq(&#39;GET&#39;, &#39;<a href="http://www.ugia.cn/wp-data/test.htm" target="_blank">http://www.ugia.cn/wp-data/test.htm</a>&#39;, &#39;&#39;, test);<br/>XMLHttp.sendReq(&#39;GET&#39;, &#39;<a href="http://www.ugia.cn/wp-data/test.htm" target="_blank">http://www.ugia.cn/wp-data/test.htm</a>&#39;, &#39;&#39;, test);<br/><br/>alert(&#39;Pool length:&#39; + XMLHttp._objPool.length);<br/>&lt;/script&gt;</div></div>]]></description>
		</item>
		
			<item>
			<link>http://www.windsfly.cn/blog/default.asp?id=1161</link>
			<title><![CDATA[Ajax+PHP简单基础入门教程]]></title>
			<author>sf223cn@yahoo.com.cn(admin)</author>
			<category><![CDATA[AJAX XML]]></category>
			<pubDate>Thu,27 Nov 2008 16:30:38 +0800</pubDate>
			<guid>http://www.windsfly.cn/blog/default.asp?id=1161</guid>	
		<description><![CDATA[Ajax 由 HTML、JavaScript™ 技术、DHTML 和 DOM 组成，这一杰出的方法可以将笨拙的 Web 界面转化成交互性的 Ajax 应用程序。对于Ajax，最核心的一个对象是XMLHttpRequest，所有的ajax操作都离不开对这个对象的操作。<br/><br/>首先我们来了解怎么在javascript中创建这个对象：<br/><div class="UBBPanel"><div class="UBBTitle"><img src="http://www.windsfly.cn/blog/images/code.gif" style="margin:0px 2px -3px 0px" alt="程序代码"/> 程序代码</div><div class="UBBContent">var xmlHttp = new XMLHttpRequest();</div></div><br/><br/>这行简单的代码在 Mozilla、Firefox、Safari、Opera 以及基本上所有以任何形式或方式支持 Ajax 的非 Microsoft 浏览器中，创建了 XMLHttpRequest 对象。但是对于市场占有率达到70%的IE来说，这种方法是不行的，而不同的IE版本还有不同的创建方法，所以我们需要在IE下面使用下面两种创建对象的办法：<br/><div class="UBBPanel"><div class="UBBTitle"><img src="http://www.windsfly.cn/blog/images/code.gif" style="margin:0px 2px -3px 0px" alt="程序代码"/> 程序代码</div><div class="UBBContent">try {<br/>xmlHttp = new ActiveXObject(&#34;Msxml2.XMLHTTP&#34;);//针对较新的浏览器<br/>} catch (err) {<br/>try {<br/>xmlHttp = new ActiveXObject(&#34;Microsoft.XMLHTTP&#34;);//针对较老的浏览器<br/>} catch (err2) {<br/>xmlHttp = false;<br/>}<br/>}</div></div><br/><br/>即使这样，我们也无法预料有些浏览器可能无法创建这个对象，所以在创建不成功的情况下，我们还要加上一句：<br/><div class="UBBPanel"><div class="UBBTitle"><img src="http://www.windsfly.cn/blog/images/code.gif" style="margin:0px 2px -3px 0px" alt="程序代码"/> 程序代码</div><div class="UBBContent">if (!xmlHttp){<br/>alert(&#34;无法创建 XMLHttpRequest 对象！&#34;);<br/>}</div></div><br/><br/>结合起来就是：<br/><div class="UBBPanel"><div class="UBBTitle"><img src="http://www.windsfly.cn/blog/images/code.gif" style="margin:0px 2px -3px 0px" alt="程序代码"/> 程序代码</div><div class="UBBContent">var xmlHttp = false;<br/>try {<br/>xmlHttp = new XMLHttpRequest();<br/>} catch (trymicrosoft) {<br/>try {<br/>xmlHttp = new ActiveXObject(&#34;Msxml2.XMLHTTP&#34;);<br/>} catch (othermicrosoft) {<br/>try {<br/>xmlHttp = new ActiveXObject(&#34;Microsoft.XMLHTTP&#34;);<br/>} catch (failed) {<br/>xmlHttp = false;<br/>}<br/>}<br/>}<br/>if (!xmlHttp){<br/>alert(&#34;无法创建 XMLHttpRequest 对象！&#34;);<br/>}</div></div><br/><br/>然后，让我们建立一个函数getInfo()，打开异步请求：<br/><div class="UBBPanel"><div class="UBBTitle"><img src="http://www.windsfly.cn/blog/images/code.gif" style="margin:0px 2px -3px 0px" alt="程序代码"/> 程序代码</div><div class="UBBContent">function getInfo() {<br/>var num = document.getElementById(&#34;num&#34;).value;//获得表单的数据<br/>var url = &#34;/ajax/1.php?n=&#34; + escape(num);<br/>xmlHttp.open(&#34;GET&#34;, url, true);//这里的true代表是异步请求<br/>}</div></div><br/><br/>一旦用 open() 配置好之后，就可以发送请求了。虽然可以使用 send() 发送数据，但也能通过 URL 本身发送数据。事实上，在大部分GET 请求中，用 URL 发送数据要容易得多，所以这里用null作为send()的参数就可以了。url地址里面的php文件是被请求来处理所需要数据的php文件，就像我们平时用PHP的时候一样，后面的参数可以加多个，并用&amp;分隔开来。<br/>xmlHttp.send(null);<br/><br/>在发送了数据之后，我们需要用回调方法来获得服务器的状态，所以就用到了onreadystatechange 属性。<br/>xmlHttp.onreadystatechange = up&#100;atePage;<br/><br/>此语句已经要放在send()语句前面，这样才会有效，后面的up&#100;atePage是处理返回信息的一个函数。完整的getInfo()如下：<br/><div class="UBBPanel"><div class="UBBTitle"><img src="http://www.windsfly.cn/blog/images/code.gif" style="margin:0px 2px -3px 0px" alt="程序代码"/> 程序代码</div><div class="UBBContent">function getInfo() {<br/>var num = document.getElementById(&#34;num&#34;).value;//获得表单的数据<br/>var url = &#34;/ajax/1.php?n=&#34; + escape(num);<br/>xmlHttp.open(&#34;GET&#34;, url, true);//这里的true代表是异步请求<br/>xmlHttp.onreadystatechange = up&#100;atePage;<br/>xmlHttp.send(null);<br/>}</div></div><br/><br/>我们还需要在html里面来触发这个函数：<br/><div class="UBBPanel"><div class="UBBTitle"><img src="http://www.windsfly.cn/blog/images/code.gif" style="margin:0px 2px -3px 0px" alt="程序代码"/> 程序代码</div><div class="UBBContent">&lt;input name=&#34;num&#34; id=&#34;num&#34; onblur=&#34;getInfo()&#34; type=&#34;text&#34; /&gt;</div></div><br/><br/>下面我们需要来编写up&#100;atePage()这个函数：<br/><div class="UBBPanel"><div class="UBBTitle"><img src="http://www.windsfly.cn/blog/images/code.gif" style="margin:0px 2px -3px 0px" alt="程序代码"/> 程序代码</div><div class="UBBContent">function up&#100;atePage(){<br/>if (xmlhttp.readyState == 4) {<br/>var response = xmlhttp.responseText;<br/>document.getElementById(&#34;city&#34;).value = response;<br/>}<br/>}</div></div><br/><br/>上面这段代码里面的readyState是服务器返回的一个状态，4这个状态表示请求已经发送，并处理完毕。responseText是获得服务器返回的信息，然后通过javascript赋给ID为city的表单。<br/><br/>到此，一个简单的Ajax程序就完成了，完整的javascript代码如下：<br/><div class="UBBPanel"><div class="UBBTitle"><img src="http://www.windsfly.cn/blog/images/code.gif" style="margin:0px 2px -3px 0px" alt="程序代码"/> 程序代码</div><div class="UBBContent">var xmlHttp = false;<br/>try {<br/>xmlHttp = new XMLHttpRequest();<br/>} catch (trymicrosoft) {<br/>try {<br/>xmlHttp = new ActiveXObject(&#34;Msxml2.XMLHTTP&#34;);<br/>} catch (othermicrosoft) {<br/>try {<br/>xmlHttp = new ActiveXObject(&#34;Microsoft.XMLHTTP&#34;);<br/>} catch (failed) {<br/>xmlHttp = false;<br/>}<br/>}<br/>}<br/>if (!xmlHttp){<br/>alert(&#34;无法创建 XMLHttpRequest 对象！&#34;);<br/>}<br/><br/>function getInfo() {<br/>var num = document.getElementById(&#34;num&#34;).value;//获得表单的数据<br/>var url = &#34;/ajax/1.php?n=&#34; + escape(num);<br/>xmlHttp.open(&#34;GET&#34;, url, true);//这里的true代表是异步请求<br/>xmlHttp.onreadystatechange = up&#100;atePage;<br/>xmlHttp.send(null);<br/>}<br/><br/>function up&#100;atePage(){<br/>if (xmlhttp.readyState == 4) {<br/>var response = xmlhttp.responseText;<br/>document.getElementById(&#34;city&#34;).value = response;<br/>}<br/>}</div></div><br/><br/>这里还缺一个php文件，由于处理的方式不一样，写法也不一样，而且这不是Ajax的主要部分，所以这里就不放代码了。只要记住php是输出并返回所需要的数据就可以了。<br/><br/><br/>这教程,对初学者挺适合.]]></description>
		</item>
		
</channel>
</rss>