<?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/">
<?xml-stylesheet type="text/xsl" href="rss.xslt"?>
<channel>
   <title>艾恩ASP学习BLOG文章列表</title>
   <link>http://dev.mo.cn/mydiary.asp</link>
   <description>艾恩ASP学习Blog,免费提供各种ASP学习资源，组件、源代码、学习手册、技术文章...</description>
   <generator>Anlige By dev.mo.cn</generator>
   <language>zh-CN</language>
   <copyright>copyright 2008 dev.mo.cn 鲁ICP备08010580</copyright>
   <pubDate>2012-5-19 8:23:19</pubDate>
   <item>
      <title>jquery实现select的美化</title>
      <author>zhanghuiguoanlige@126.com</author>
      <link>http://dev.mo.cn/article_323.html</link>
      <pubDate>2012-1-16 15:38:45</pubDate>
      <guid>http://dev.mo.cn/article_323.html</guid>
      <description>
      <![CDATA[jquery实现select的美化！<br /><br /><div class="code"><div class="code_title"><span> &nbsp;<img src="images/code.gif" alt="" style="padding:0px;border:0px;" /></span>&nbsp;&nbsp;&nbsp;<a href="javascript:void(0);" onclick="window.clipboardData.setData('Text',this.parentNode.parentNode.childNodes[1].outerText);alert('븴Ƴɹ,Ctrl+VճҪλ!!');">ȫ</a></div><div class="code_content">&lt;html&gt;<br />&nbsp;　&nbsp;&lt;head&gt;<br />&nbsp;　&nbsp;　　&lt;script&nbsp;src="jquery-1.2.js"&gt;&lt;/script&gt;<br />&nbsp;　&nbsp;　　&lt;script&gt;<br />&nbsp;　&nbsp;　　　　$(document).ready(<br />&nbsp;　&nbsp;　　　　　　function&nbsp;()&nbsp;{<br />&nbsp;　&nbsp;　　　　　　　　$("#select").click&nbsp;(<br />&nbsp;　&nbsp;　　　　　　　　　　function&nbsp;()&nbsp;{<br />&nbsp;　&nbsp;　　　　　　　　　　　　var&nbsp;original&nbsp;=this;<br />&nbsp;　&nbsp;　　　　　　　　　　　　$(original).blur();<br />&nbsp;　&nbsp;　　　　　　　　　　　　$(original).css("visibility",&nbsp;"hidden");<br />&nbsp;　&nbsp;　　　　　　　　　　　　var&nbsp;value&nbsp;=&nbsp;$(this).attr("value");<br />&nbsp;　&nbsp;　　　　　　　　　　　　var&nbsp;topOffset&nbsp;=&nbsp;0;<br />&nbsp;　&nbsp;　　　　　　　　　　　　var&nbsp;alternate&nbsp;=&nbsp;document.createElement("div");<br />&nbsp;　&nbsp;　　　　　　　　　　　　$(document.body).append(alternate);<br />&nbsp;　&nbsp;　　　　　　　　　　　　{<br />&nbsp;　&nbsp;　　　　　　　　　　　　　　var&nbsp;alternate_select&nbsp;=&nbsp;document.createElement("div");<br />&nbsp;　&nbsp;　　　　　　　　　　　　　　$(alternate).append(alternate_select);<br />&nbsp;　&nbsp;　　　　　　　　　　　　　　$(alternate_select).css("position",&nbsp;"absolute");<br />&nbsp;　&nbsp;　　　　　　　　　　　　　　$(alternate_select).css("width",&nbsp;original.offsetWidth&nbsp;+&nbsp;"px");<br />&nbsp;　&nbsp;　　　　　　　　　　　　　　$(alternate_select).css("height",&nbsp;original.offsetHeight&nbsp;+&nbsp;"px");<br />&nbsp;　&nbsp;　　　　　　　　　　　　　　$(alternate_select).css("top",&nbsp;"0px");<br />&nbsp;　&nbsp;　　　　　　　　　　　　　　$(alternate_select).css("left",&nbsp;"0px");<br />&nbsp;　&nbsp;　　　　　　　　　　　　　　$(alternate_select).css("cursor",&nbsp;"pointer");<br />&nbsp;　&nbsp;　　　　　　　　　　　　　　$(alternate_select).text(<br />&nbsp;　&nbsp;　　　　　　　　　　　　　　　　$($(original).children("option").filter(<br />&nbsp;　&nbsp;　　　　　　　　　　　　　　　　　　　　function&nbsp;(index)&nbsp;{<br />&nbsp;　&nbsp;　　　　　　　　　　　　　　　　　　　　　　return&nbsp;$(original).attr("value")&nbsp;===&nbsp;value;<br />&nbsp;　&nbsp;　　　　　　　　　　　　　　　　　　　　}<br />&nbsp;　&nbsp;　　　　　　　　　　　　　　　　　　)[0]<br />&nbsp;　&nbsp;　　　　　　　　　　　　　　　　).text()<br />&nbsp;　&nbsp;　　　　　　　　　　　　　　);<br />&nbsp;　&nbsp;　　　　　　　　　　　　　　$(alternate_select).click(<br />&nbsp;　&nbsp;　　　　　　　　　　　　　　　　function&nbsp;()&nbsp;{<br />&nbsp;　&nbsp;　　　　　　　　　　　　　　　　　　$(original).css("visibility",&nbsp;"inherit");<br />&nbsp;　&nbsp;　　　　　　　　　　　　　　　　　　document.body.removeChild(alternate);<br />&nbsp;　&nbsp;　　　　　　　　　　　　　　　　}<br />&nbsp;　&nbsp;　　　　　　　　　　　　　　);<br />&nbsp;　&nbsp;　　　　　　　　　　　　　　$(alternate_select).hover(<br />&nbsp;　&nbsp;　　　　　　　　　　　　　　　　function&nbsp;(event)&nbsp;{<br />&nbsp;　&nbsp;　　　　　　　　　　　　　　　　　　$(this).css("background-color",&nbsp;"blue");<br />&nbsp;　&nbsp;　　　　　　　　　　　　　　　　　　$(this).css("color",&nbsp;"white");<br />&nbsp;　&nbsp;　　　　　　　　　　　　　　　　},<br />&nbsp;　&nbsp;　　　　　　　　　　　　　　　　function&nbsp;(event)&nbsp;{<br />&nbsp;　&nbsp;　　　　　　　　　　　　　　　　　　$(this).css("background-color",&nbsp;"inherit");<br />&nbsp;　&nbsp;　　　　　　　　　　　　　　　　　　$(this).css("color",&nbsp;"inherit");<br />&nbsp;　&nbsp;　　　　　　　　　　　　　　　　}<br />&nbsp;　&nbsp;　　　　　　　　　　　　　　);<br />&nbsp;　&nbsp;　　　　　　　　　　　　}<br />&nbsp;　&nbsp;　　　　　　　　　　　　topOffset&nbsp;+=&nbsp;alternate_select.offsetHeight;<br />&nbsp;　&nbsp;　　　　　　　　　　　　{<br />&nbsp;　&nbsp;　　　　　　　　　　　　　　$(original).children("option").each(<br />&nbsp;　&nbsp;　　　　　　　　　　　　　　　　function&nbsp;(index,&nbsp;element)&nbsp;{<br />&nbsp;　&nbsp;　　　　　　　　　　　　　　　　　　var&nbsp;alternate_option&nbsp;=&nbsp;document.createElement("div");<br />&nbsp;　&nbsp;　　　　　　　　　　　　　　　　　　$(alternate).append(alternate_option);<br />&nbsp;　&nbsp;　　　　　　　　　　　　　　　　　　$(alternate_option).css("position",&nbsp;"absolute");<br />&nbsp;　&nbsp;　　　　　　　　　　　　　　　　　　$(alternate_option).css("width",&nbsp;element.offsetWidth&nbsp;+&nbsp;"px");<br />&nbsp;　&nbsp;　　　　　　　　　　　　　　　　　　$(alternate_option).css("height",&nbsp;element.offsetHeight&nbsp;+&nbsp;"px");<br />&nbsp;　&nbsp;　　　　　　　　　　　　　　　　　　$(alternate_option).css("top",&nbsp;topOffset&nbsp;+&nbsp;"px");<br />&nbsp;　&nbsp;　　　　　　　　　　　　　　　　　　$(alternate_option).css("left",&nbsp;"0px");<br />&nbsp;　&nbsp;　　　　　　　　　　　　　　　　　　$(alternate_option).css("cursor",&nbsp;"pointer");<br />&nbsp;　&nbsp;　　　　　　　　　　　　　　　　　　$(alternate_option).text($(element).text());<br />&nbsp;　&nbsp;　　　　　　　　　　　　　　　　　　var&nbsp;option_value&nbsp;=&nbsp;$(element).attr("value");<br />&nbsp;　&nbsp;　　　　　　　　　　　　　　　　　　if&nbsp;(value&nbsp;===&nbsp;option_value)&nbsp;{<br />&nbsp;　&nbsp;　　　　　　　　　　　　　　　　　　　　$(alternate_option).css("font-weight",&nbsp;"bold");<br />&nbsp;　&nbsp;　　　　　　　　　　　　　　　　　　}<br />&nbsp;　&nbsp;　　　　　　　　　　　　　　　　　　$(alternate_option).click(<br />&nbsp;　&nbsp;　　　　　　　　　　　　　　　　　　　　function&nbsp;()&nbsp;{<br />&nbsp;　&nbsp;　　　　　　　　　　　　　　　　　　　　　　$(original).attr("value",&nbsp;option_value);<br />&nbsp;　&nbsp;　　　　　　　　　　　　　　　　　　　　　　$(original).css("visibility",&nbsp;"inherit");<br />&nbsp;　&nbsp;　　　　　　　　　　　　　　　　　　　　　　document.body.removeChild(alternate);<br />&nbsp;　&nbsp;　　　　　　　　　　　　　　　　　　　　}<br />&nbsp;　&nbsp;　　　　　　　　　　　　　　　　　　);<br />&nbsp;　&nbsp;　　　　　　　　　　　　　　　　　　$(alternate_option).hover(<br />&nbsp;　&nbsp;　　　　　　　　　　　　　　　　　　　　function&nbsp;()&nbsp;{<br />&nbsp;　&nbsp;　　　　　　　　　　　　　　　　　　　　　　$(this).css("background-color",&nbsp;"blue");<br />&nbsp;　&nbsp;　　　　　　　　　　　　　　　　　　　　　　$(this).css("color",&nbsp;"white");<br />&nbsp;　&nbsp;　　　　　　　　　　　　　　　　　　　　},<br />&nbsp;　&nbsp;　　　　　　　　　　　　　　　　　　　　function&nbsp;()&nbsp;{<br />&nbsp;　&nbsp;　　　　　　　　　　　　　　　　　　　　　　$(this).css("background-color",&nbsp;"inherit");<br />&nbsp;　&nbsp;　　　　　　　　　　　　　　　　　　　　　　$(this).css("color",&nbsp;"inherit");<br />&nbsp;　&nbsp;　　　　　　　　　　　　　　　　　　　　}<br />&nbsp;　&nbsp;　　　　　　　　　　　　　　　　　　);<br />&nbsp;　&nbsp;　　　　　　　　　　　　　　　　　　topOffset&nbsp;+=&nbsp;alternate_option.offsetHeight;<br />&nbsp;　&nbsp;　　　　　　　　　　　　　　　　}<br />&nbsp;　&nbsp;　　　　　　　　　　　　　　);<br />&nbsp;　&nbsp;　　　　　　　　　　　　}<br />&nbsp;　&nbsp;　　　　　　　　　　　　$(alternate).css("position",&nbsp;"absolute");<br />&nbsp;　&nbsp;　　　　　　　　　　　　$(alternate).css("top",&nbsp;original.offsetTop&nbsp;+&nbsp;"px");<br />&nbsp;　&nbsp;　　　　　　　　　　　　$(alternate).css("left",&nbsp;original.offsetLeft&nbsp;+&nbsp;"px");<br />&nbsp;　&nbsp;　　　　　　　　　　　　$(alternate).css("width",&nbsp;alternate_select.offsetWidth&nbsp;+&nbsp;"px");<br />&nbsp;　&nbsp;　　　　　　　　　　　　$(alternate).css("height",&nbsp;topOffset&nbsp;+&nbsp;"px");<br />&nbsp;　&nbsp;　　　　　　　　　　　　$(alternate).css("background-image",&nbsp;"url(http://s.goumin.com/imgs/logo.gif)");<br />&nbsp;　&nbsp;　　　　　　　　　　}<br />&nbsp;　&nbsp;　　　　　　　　);<br />&nbsp;　&nbsp;　　　　　　}<br />&nbsp;　&nbsp;　　　　);<br />&nbsp;　&nbsp;　　&lt;/script&gt;<br />&nbsp;　&nbsp;&lt;/head&gt;<br />&nbsp;　&nbsp;&lt;body&gt;<br />&nbsp;　&nbsp;　　&lt;select&nbsp;id="select"&gt;<br />&nbsp;　&nbsp;　　　　&lt;option&nbsp;value="1"&gt;option&nbsp;1&lt;/option&gt;<br />&nbsp;　&nbsp;　　　　&lt;option&nbsp;value="2"&gt;option&nbsp;2&lt;/option&gt;<br />&nbsp;　&nbsp;　　　　&lt;option&nbsp;value="3"&gt;option&nbsp;3&lt;/option&gt;<br />&nbsp;　&nbsp;　　　　&lt;option&nbsp;value="4"&gt;option&nbsp;4&lt;/option&gt;<br />&nbsp;　&nbsp;　　&lt;/select&gt;<br />&nbsp;　&nbsp;&lt;/body&gt;<br />&lt;/html&gt;</div></div>]]>
      </description>
      <category>AJAX</category>
   </item>
   <item>
      <title>好久没发东西了，发布个Ajax类，类似jQuery的</title>
      <author>zhanghuiguoanlige@126.com</author>
      <link>http://dev.mo.cn/article_314.html</link>
      <pubDate>2011-6-10 22:30:02</pubDate>
      <guid>http://dev.mo.cn/article_314.html</guid>
      <description>
      <![CDATA[下载地址：<a href="http://dev.mo.cn/source_200.html" target="new">http://dev.mo.cn/source_200.html</a><br />其实这个东西写了很久了，自己一直在使用，我们公司的网站<a href="http://www.eb.com.cn" target="new">http://www.eb.com.cn</a>的Ajax全部是用的这个东西<br />压缩包里面包含了详细的说明和示例（里面有一个简洁的省市三级联动菜单哦）。<br />调用方法类似jQuery，可以绑定form表单提交<br />如果你只使用jQuery的Ajax功能的话，可以抛弃jQuery了<br /><br />Ajax&nbsp;Class&nbsp;of&nbsp;Aien<br />Author&nbsp;:&nbsp;Aien<br />homepage&nbsp;:&nbsp;http://dev.mo.cn<br />email&nbsp;:&nbsp;i@ruboy.com<br />QQ&nbsp;:&nbsp;1034555083&nbsp;<br />Thanks&nbsp;for&nbsp;using&nbsp;this&nbsp;class.&nbsp;You&nbsp;can&nbsp;visit&nbsp;my&nbsp;homepage&nbsp;for&nbsp;help&nbsp;.<br />You&nbsp;can&nbsp;use&nbsp;this&nbsp;class&nbsp;and&nbsp;don't&nbsp;need&nbsp;to&nbsp;change&nbsp;any&nbsp;code&nbsp;.<br /><br />]]>
      </description>
      <category>AJAX</category>
   </item>
   <item>
      <title>Ajax跨域代理访问网络资源</title>
      <author>zhanghuiguoanlige@126.com</author>
      <link>http://dev.mo.cn/article_295.html</link>
      <pubDate>2010-11-18 17:55:32</pubDate>
      <guid>http://dev.mo.cn/article_295.html</guid>
      <description>
      <![CDATA[代码下载地址：<a href="/upfiles/20101118175349810.rar" target="new">/upfiles/20101118175349810.rar</a><br /><br />解决Ajax跨域访问报“没有权限”的错误。<br /><div class="code"><div class="code_title"><span> &nbsp;<img src="images/code.gif" alt="" style="padding:0px;border:0px;" /></span>&nbsp;&nbsp;&nbsp;<a href="javascript:void(0);" onclick="window.clipboardData.setData('Text',this.parentNode.parentNode.childNodes[1].outerText);alert('븴Ƴɹ,Ctrl+VճҪλ!!');">ȫ</a></div><div class="code_content"><br />&lt;!--#include&nbsp;file="smart.asp"--&gt;<br />&lt;%<br />Response.charset="utf-8"<br />dim&nbsp;url,method,data,charset<br />url&nbsp;=Request.Form("targeturl")<br />method&nbsp;=Request.Form("method")<br />data&nbsp;=Request.Form("data")<br />charset&nbsp;=&nbsp;Request.Form("charset")<br />if&nbsp;charset&nbsp;=&nbsp;""&nbsp;then&nbsp;charset&nbsp;=&nbsp;"GB2312"<br />response.Write&nbsp;SmartHttp(url,method,data).send().gettext(charset)<br />set&nbsp;myhttp&nbsp;=&nbsp;nothing<br />%&gt;<br /></div></div>]]>
      </description>
      <category>AJAX</category>
   </item>
   <item>
      <title>超小型ajax实现</title>
      <author>zhanghuiguoanlige@126.com</author>
      <link>http://dev.mo.cn/article_285.html</link>
      <pubDate>2010-6-16 20:34:40</pubDate>
      <guid>http://dev.mo.cn/article_285.html</guid>
      <description>
      <![CDATA[<span style="color:#FF0000;"><span style="font-family:Verdana;"><span style="font-size:24px;"><a href="/upfiles/20100616210924229.rar" target="new">SmartAjax源代码下载</a></span></span></span><br /><br /><div class="code"><div class="code_title"><span> &nbsp;<img src="images/code.gif" alt="" style="padding:0px;border:0px;" /></span>&nbsp;&nbsp;&nbsp;<a href="javascript:void(0);" onclick="window.clipboardData.setData('Text',this.parentNode.parentNode.childNodes[1].outerText);alert('븴Ƴɹ,Ctrl+VճҪλ!!');">ȫ</a></div><div class="code_content">//&nbsp;Aien,i@ruboy.com,1034555083<br />//&nbsp;Ajax(a,b,c,d,e,f,g);<br />//&nbsp;参数说明：a-请求方法；b-请求的地址；c-请求的数据，a为post时有效；d-回调函数，函数里面的this引用是xmlhttp对象；e-是否异步，除非设置为false，否则为异步调用；f,g-登录用户名和密码<br />function&nbsp;Ajax(a,b,c,d,e,f,g){<br />&nbsp; &nbsp; &nbsp; &nbsp; a&nbsp;=&nbsp;a.toUpperCase();<br />&nbsp; &nbsp; &nbsp; &nbsp; if(e===false){e=false;}else{e&nbsp;=&nbsp;true;}<br />&nbsp; &nbsp; &nbsp; &nbsp; var&nbsp;obj&nbsp;=&nbsp;Ajax.Ajax_GetObj();<br />&nbsp; &nbsp; &nbsp; &nbsp; if(obj){<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if(f){<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; obj.open(a,b,e,f,g);&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; &nbsp; &nbsp; &nbsp; &nbsp; obj.open(a,b,e);&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; if(a.toUpperCase()=="POST"){<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; obj.setRequestHeader("Content-Type",&nbsp;"application/x-www-form-urlencoded");&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; obj.onreadystatechange=function(){if(typeof&nbsp;d&nbsp;!=&nbsp;"function"){return;}d.apply(obj,[a,b,c,d,e,f,g]);};<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; obj.send(c);<br />&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />}<br />Ajax.Ajax_GetObj&nbsp;=&nbsp;function(){<br />&nbsp; &nbsp; &nbsp; &nbsp; var&nbsp;b&nbsp;=&nbsp;null;<br />&nbsp; &nbsp; &nbsp; &nbsp; if&nbsp;(window.ActiveXObject)&nbsp;{&nbsp;&nbsp;//for&nbsp;ie<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var&nbsp;httplist&nbsp;=&nbsp;["MSXML2.XMLHttp.5.0","MSXML2.XMLHttp.4.0","MSXML2.XMLHttp.3.0","MSXML2.XMLHttp","Microsoft.XMLHttp"];<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; for(var&nbsp;i&nbsp;=&nbsp;httplist.length&nbsp;-1;i&nbsp;&gt;=&nbsp;0;i--){<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; &nbsp; &nbsp; &nbsp; &nbsp; b&nbsp;=&nbsp;new&nbsp;ActiveXObject(httplist[&nbsp;i]);<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return&nbsp;b;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }catch(ex){}<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br />&nbsp; &nbsp; &nbsp; &nbsp; }else&nbsp;if&nbsp;(window.XMLHttpRequest)&nbsp;{&nbsp;&nbsp;//for&nbsp;other<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; b&nbsp;=&nbsp;new&nbsp;XMLHttpRequest();&nbsp;<br />&nbsp; &nbsp; &nbsp; &nbsp; }<br />&nbsp; &nbsp; &nbsp; &nbsp; return&nbsp;b;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />}</div></div>]]>
      </description>
      <category>AJAX</category>
   </item>
   <item>
      <title>艾恩AJAX类，支持完整调用，表单提交和简洁调用</title>
      <author>zhanghuiguoanlige@126.com</author>
      <link>http://dev.mo.cn/article_266.html</link>
      <pubDate>2009-11-19 11:26:19</pubDate>
      <guid>http://dev.mo.cn/article_266.html</guid>
      <description>
      <![CDATA[演示地址：<a href="http://dev.mo.cn/aiencode/ajax/" target="new">http://dev.mo.cn/aiencode/ajax/</a><br />下载地址：<a href="http://dev.mo.cn/source_194.html" target="new">http://dev.mo.cn/source_194.html</a><br /><br />Ajax类库使用说明<br />完整调用统一调用入口：Ajax(setting);&nbsp;关于参数setting,请详细参考下面的说明。<br /><br />简洁调用入口：Ajax.get(url,data,fn);&nbsp;以及&nbsp;Ajax.post(url,data,fn);<br /><br />Ajax的配置:<br />var&nbsp;settings&nbsp;=&nbsp;{&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;asc:&nbsp;true,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//true-异步传输；false-同步传输&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;form:&nbsp;formObj,&nbsp;&nbsp;&nbsp;&nbsp;//表单对象,如果设置本项，则会用ajax提交表单，忽略设置的method,url和data属性&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;url:&nbsp;"",&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//若不设置form属性，则本项为必选值<br />&nbsp;&nbsp;&nbsp;&nbsp;dataType:&nbsp;"text",&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//可取值text,xml,json<br />&nbsp;&nbsp;&nbsp;&nbsp;method:&nbsp;"get",&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//可取post,get&nbsp;不区分大小写。设置form属性后，本项会被忽略。&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;data:&nbsp;"",&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//具体格式请看示例程序。设置form属性后，本项会被忽略。<br />&nbsp;&nbsp;&nbsp;&nbsp;timeout:&nbsp;10000,&nbsp;&nbsp;&nbsp;&nbsp;//设置超时时间，默认为10秒（即10000毫秒）<br />&nbsp;&nbsp;&nbsp;&nbsp;succeed:&nbsp;function(a,b,c){return&nbsp;true},&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;error:&nbsp;function(a,b,c){return&nbsp;true},&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;ontimeout:&nbsp;function(a,b,c){return&nbsp;true}&nbsp;<br />};]]>
      </description>
      <category>AJAX</category>
   </item>
   <item>
      <title>哈，写了个迅雷漫画频道的采集程序，分享出来</title>
      <author>zhanghuiguoanlige@126.com</author>
      <link>http://dev.mo.cn/article_214.html</link>
      <pubDate>2009-5-13 10:57:23</pubDate>
      <guid>http://dev.mo.cn/article_214.html</guid>
      <description>
      <![CDATA[本程序可以采集&nbsp;迅雷漫画频道&nbsp;所有的漫画，<br /><br />&nbsp;&nbsp;本程序功能:<br />&nbsp;&nbsp;1.提供多种检索方式，可以按字母，类型，状态，地区，颜色以及页码进行检索<br />&nbsp;&nbsp;2.各种检索方式都提供缓存机制，第一次加载可能会比较慢，第二次加载会比较快<br />&nbsp;&nbsp;3.既可以在线浏览，也可以采集到本地收藏<br />&nbsp;&nbsp;4.直接在右边点击链接是在线浏览；选中后，点击下面的"批量采集"，会自动保存到本地<br />&nbsp;&nbsp;5.程序根据漫画名和卷名称或话名称自动建立文件夹<br />&nbsp;&nbsp;<br />&nbsp;&nbsp;声明:&nbsp;本程序为作者原创，请保留页面底部信息；<br />漫画来源为&nbsp;迅雷漫画频道，请勿将采集结果用于非法用途；否则，一切法律后果自负。<br /><br /><br />&nbsp;&nbsp;注意:&nbsp;因为是采集程序，如果某个类别下的漫画项目过多，加载时间可能会过长，请耐心等待；<br />加载速度取决于服务器和迅雷之间的通讯状况<br />可以到这里来下载：<a href="http://dev.mo.cn/source_185.html" target="new">http://dev.mo.cn/source_185.html</a><br />&nbsp;&nbsp;QQ:1034555083/Email:zhanghuiguoanlige@126.com]]>
      </description>
      <category>AJAX</category>
   </item>
   <item>
      <title>艾恩AJAX无刷新上传再次进行优化</title>
      <author>zhanghuiguoanlige@126.com</author>
      <link>http://dev.mo.cn/article_197.html</link>
      <pubDate>2009-3-26 14:34:50</pubDate>
      <guid>http://dev.mo.cn/article_197.html</guid>
      <description>
      <![CDATA[优化了上传控件的创建方法，传递的参数只保留一个，即要绑定的DIV标签;<br />通过设置控件的属性target,url,savePath来分别设置目标iframe,上传处理页面以及文件保存目录。<br /><br />同时，ajax不再使用jquery,而使用自己原创Ajax函数，从而减小代码量；<br /><br /><div class="quote">/*======================================<br />下面语句使上传控件显示在上面ID为uploadContenter的Div标签<br />提交URL为upload.asp保存目录为upload<br />表单提交到上面name属性为AnUploader的iframe里面；<br />========================================*/<br /><br />var&nbsp;AjaxUp=new&nbsp;AjaxProcesser("uploadContenter");<br /><br />//设置提交到的iframe名称<br />AjaxUp.target="AnUploader";&nbsp;&nbsp;<br /><br />//上传处理页面<br />AjaxUp.url="upload.asp";&nbsp;<br /><br />//保存目录<br />AjaxUp.savePath="upload";</div><br /><br />&nbsp;&nbsp;<b>几个示例程序的下载地址(示例使用的最后版本均为V9.2.09):</b><br /><ol type="1"><li>&nbsp;&nbsp;<a href="http://dev.mo.cn/source_178.html" target="new">Ajax无刷新上传示例程序下载</a><li>&nbsp;&nbsp;<a href="http://dev.mo.cn/source_143.html" target="new">艾恩ASP无组件上传类(An-Upload)V9.2.09</a><li>&nbsp;&nbsp;<a href="http://dev.mo.cn/source_167.html" target="new">艾恩ASP文件上传组件v9.2.09</a><li>&nbsp;&nbsp;<a href="http://dev.mo.cn/source_175.html" target="new">艾恩Ajax无刷新文件上传(带进度条,无组件)</a><li>&nbsp;&nbsp;<a href="http://dev.mo.cn/source_176.html" target="new">艾恩Ajax无刷新文件上传(带进度条,组件版,低CPU使用)</a></ol><br /><br />如果有任何疑问或业务上的需要，请联系本人。本人简历&nbsp;<a href="http://dev.mo.cn/resume" target="new">http://dev.mo.cn/resume</a>]]>
      </description>
      <category>AJAX</category>
   </item>
   <item>
      <title>使用Ajax进行用户名有效性验证</title>
      <author>zhanghuiguoanlige@126.com</author>
      <link>http://dev.mo.cn/article_182.html</link>
      <pubDate>2009-1-15 10:27:32</pubDate>
      <guid>http://dev.mo.cn/article_182.html</guid>
      <description>
      <![CDATA[用户名有效性验证，是会员注册必须的步骤，下面一步步介绍如何使用Ajax进行有效性验证<br /><br />一、用户请求页<br />&nbsp;&nbsp;&nbsp;新建一个页面reg.html,如下代码<br /><div class="quote"><br />&lt;!DOCTYPE&nbsp;html&nbsp;PUBLIC&nbsp;"-//W3C//DTD&nbsp;XHTML&nbsp;1.0&nbsp;Transitional//EN"&nbsp;"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;<br />&lt;html&nbsp;xmlns="http://www.w3.org/1999/xhtml"&nbsp;&gt;<br />&lt;head&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;title&gt;Ajax范例---用户名有效性验证&lt;/title&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;script&nbsp;type="text/javascript"&nbsp;src="custom.js"&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&nbsp;tye="text"&nbsp;id="username"&nbsp;name="username"&nbsp;/&gt;<br />&lt;input&nbsp;type="button"&nbsp;value="验证用户名"&nbsp;onclick="return&nbsp;test();"&nbsp;/&gt;&lt;br&nbsp;/&gt;&lt;br&nbsp;/&gt;<br />&lt;span&nbsp;id="result"&gt;&lt;/span&gt;<br />&lt;/body&gt;<br />&lt;/html&gt;</div><br /><br />二、Javascript发送请求代码<br />新建文件custom.js(Javascript代码)&nbsp;代码如下<br /><div class="quote"><br />/*<br />Ajax范例<br />By&nbsp;Anlige<br />zhanghuiguoanlige@126.com<br />*/<br />//自定义函数,获取标签对象<br />&nbsp;&nbsp;&nbsp;&nbsp;function&nbsp;$(id){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;document.getElementById(id);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />//创建组件<br />&nbsp;&nbsp;&nbsp;&nbsp;function&nbsp;createObject(){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;Request=null;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(window.ActiveXObject)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Request=&nbsp;new&nbsp;ActiveXObject("Microsoft.XMLHTTP");<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}else&nbsp;if&nbsp;(window.XMLHttpRequest)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Request=&nbsp;new&nbsp;XMLHttpRequest();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(Request.overrideMimeType)&nbsp;{//设置MiME&nbsp;类别<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Request.overrideMimeType("text/xml");&nbsp;<br />&nbsp;&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&nbsp;Request;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;function&nbsp;test(){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;username=$("username").value;&nbsp;//获取表单值<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(username==""){alert("请输入用户名");return&nbsp;false};<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$("result").innerText="验证中...";<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&nbsp;myRequest=createObject();<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&nbsp;url="test.asp?rnd="&nbsp;+&nbsp;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&nbsp;data="username="&nbsp;+&nbsp;username;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//调用open方法:&nbsp;使用POST方式提交;&nbsp;&nbsp;提交到url;&nbsp;&nbsp;true代表启用异步.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;myRequest.open("Post",url,true);&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//Post方式提交必须加这句,并且要在调用post方法后才能加,否则会提示"未知错误"<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;myRequest.setRequestHeader("Content-Type",&nbsp;"application/x-www-form-urlencoded");&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&nbsp;=function(){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(myRequest.readyState==4){&nbsp;&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&nbsp;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=="no"){<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;$("result").innerText="本用户名未被使用,您可以注册！";<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;$("result").innerText="本用户名已被占用,请选择其他用户名！";<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><br /><br />三、后台验证代码<br />新建文件test.asp(后台验证代码),本文件编码为utf-8(用记事本打开--另存为utf-8格式--覆盖原文件即可)<br /><div class="quote"><br />&lt;%@&nbsp;LANGUAGE="VBScript"%&gt;&nbsp;<br />&lt;%&nbsp;<br />response.charset="utf-8"&nbsp;&nbsp;&nbsp;'字符编码为utf-8<br />dim&nbsp;names,username,isHas<br />names="admin|anlige|admin888"&nbsp;&nbsp;&nbsp;'模拟一个数据库<br />names=split(names,"|")<br />username=request.form("username")&nbsp;&nbsp;'因为Ajax是post的数据，这里用form集合<br />isHas="no"<br />for&nbsp;i=0&nbsp;to&nbsp;ubound(names)<br />&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;names(i)=username&nbsp;then<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;isHas="yes"<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;exit&nbsp;for<br />&nbsp;&nbsp;&nbsp;&nbsp;end&nbsp;if<br />next<br />response.write&nbsp;isHas&nbsp;&nbsp;'输出验证结果<br />%&gt;&nbsp;</div><br />&nbsp;&nbsp;&nbsp;&nbsp;这样，模拟用户注册过程中的"用户名有效性验证"就完成了；<br />&nbsp;&nbsp;&nbsp;&nbsp;测试方法:浏览器中打开reg.html,输入一个用户名进行验证,如果输入&nbsp;admin,anlige,admin888三个中的任何一个都会提示已经被注册。改实例修改test.asp后完全可以移植到原用户验证系统]]>
      </description>
      <category>AJAX</category>
   </item>
   <item>
      <title>AJAX开发简略</title>
      <author>zhanghuiguoanlige@126.com</author>
      <link>http://dev.mo.cn/article_174.html</link>
      <pubDate>2009-1-2 18:54:40</pubDate>
      <guid>http://dev.mo.cn/article_174.html</guid>
      <description>
      <![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;在使用浏览器浏览网页的时候，当页面刷新很慢的时候，你的浏览器在干什么？你的屏幕内容是什么？是的，你的浏览器在<br />等待刷新，而你的屏幕内容是一片空白，而你在屏幕前苦苦的等待浏览器的响应。开发人员为了克服这种尴尬的局面，不得不<br />在每一个可能需要长时间等待响应的页面上增加一个&nbsp;DIV，告诉用户“系统正在处理您的请求，请稍候……”。&nbsp;<br /><br />&nbsp;&nbsp;&nbsp;现在，有一种越来越流行越热的“老”技术，可以彻底改变这种窘迫的局面。那就是AJAX。如今，随着&nbsp;Gmail、Google-maps的应用和各种浏览器的支持，AJAX正逐渐吸引全世界的眼球。&nbsp;<br /><br /><span style="font-size:5;">一、AJAX定义&nbsp;</span><br /><br />&nbsp;&nbsp;&nbsp;AJAX（Asynchronous&nbsp;JavaScript&nbsp;and&nbsp;XML）其实是多种技术的综合，包括&nbsp;Javascript、XHTML和&nbsp;CSS、DOM、XML&nbsp;和<br />XSTL、XMLHttpRequest。<br />&nbsp;&nbsp;&nbsp;其中：&nbsp;使用&nbsp;XHTML和&nbsp;CSS标准化呈现，使用&nbsp;DOM&nbsp;实现动态显示和交互，使用&nbsp;XML&nbsp;和&nbsp;XSTL进行数据交换与处理，使<br />用&nbsp;XMLHttpRequest&nbsp;对象进行异步数据读取，使用&nbsp;Javascript&nbsp;绑定和处理所有数据。&nbsp;在&nbsp;AJAX&nbsp;提出之前，业界对于上述技术都只是单独的使用，没有综合使用，也是由于之前的技术需求所决定的。随着应用的广泛，AJAX&nbsp;也成为香饽饽了。&nbsp;<br /><br /><span style="font-size:5;">二、现状与需要解决的问题&nbsp;</span><br /><br />&nbsp;&nbsp;传统的&nbsp;Web&nbsp;应用采用同步交互过程，这种情况下，用户首先向&nbsp;HTTP&nbsp;服务器触发一个行为或请求的呼求。反过来，服务器执行某些任务，再向发出请求的用户返回一个&nbsp;HTML页面。这是一种不连贯的用户体验，服务器在处理请求的时候，用户多数<br />时间处于等待的状态，屏幕内容也是一片空白。自从采用超文本作为&nbsp;Web&nbsp;传输和呈现之后，我们都是采用这么一套传输方式。当负载比较小的时候，这并不会体现出有什么不妥。可是当负载比较大，响应时间要很长，1&nbsp;分钟、2&nbsp;分钟……数分钟的<br />时候，这种等待就不可忍受了。严重的，超过响应时间，服务器干脆告诉你页面不可用。另外，某些时候，我只是想改变页面<br />一小部分的数据，那为什么我必须重新加载整个页面呢？！当软件设计越来越讲究人性化的时候，这么糟糕的用户体验简直与<br />这种原则背道而驰。为什么老是要让用户等待服务器取数据呢？至少，我们应该减少用户等待的时间。现在，除了程序设计、<br />编码优化和服务器调优之外，还可以采用&nbsp;AJAX。&nbsp;<br /><br /><span style="font-size:5;">三、为什么使用&nbsp;AJAX&nbsp;</span><br /><br />&nbsp;&nbsp;&nbsp;与传统的&nbsp;Web&nbsp;应用不同，AJAX&nbsp;采用异步交互过程。AJAX&nbsp;在用户与服务器之间引入一个中间媒介，从而消除了网络交互过程中的处理—等待—处理—等待缺点。用户的浏览器在执行任务时即装载了&nbsp;AJAX&nbsp;引擎。AJAX&nbsp;引擎用&nbsp;JavaScript&nbsp;语言编写，<br />通常藏在一个隐藏的框架中。它负责编译用户界面及与服务器之间的交互。AJAX&nbsp;引擎允许用户与应用软件之间的交互过程异步<br />进行，&nbsp;独立于用户与网络服务器间的交流。&nbsp;现在，&nbsp;可以用Javascript调用AJAX引擎来代替产生一个&nbsp;HTTP的用户动作，内存中的数据编辑、页面导航、数据校验这些不需要重新载入整个页面的需求可以交给&nbsp;AJAX&nbsp;来执行。&nbsp;<br /><br />&nbsp;<br />使用&nbsp;AJAX，可以为&nbsp;ISP、开发人员、终端用户带来可见的便捷：&nbsp;<br />&nbsp;&nbsp;1.减轻服务器的负担。AJAX&nbsp;的原则是“按需取数据”&nbsp;，可以最大程度的减少冗余请求，和响应对服务器造成的负担。&nbsp;<br />&nbsp;&nbsp;2.无刷新更新页面，减少用户心理和实际的等待时间。特别的，当要读取大量的数据的时候，不用像&nbsp;Reload&nbsp;那样出现白屏<br />的情况，AJAX&nbsp;使用&nbsp;XMLHTTP&nbsp;对象发送请求并得到服务器响应，在不重新载入整个页面的情况下用&nbsp;Javascript&nbsp;操作&nbsp;DOM&nbsp;最终更新页面。所以在读取数据的过程中，用户所面对的不是白屏，是原来的页面内容（也可以加一个Loading&nbsp;的提示框让用户<br />知道处于读取数据过程）&nbsp;，只有当数据接收完毕之后才更新相应部分的内容。这种更新是瞬间的，用户几乎感觉不到。&nbsp;<br />&nbsp;&nbsp;3.带来更好的用户体验。&nbsp;<br />&nbsp;&nbsp;4.可以把以前一些服务器负担的工作转嫁到客户端，利用客户端闲置的能力来处理，减轻服务器和带宽的负担，节约空间和宽带租用成本。&nbsp;<br />&nbsp;&nbsp;5.可以调用外部数据。&nbsp;<br />&nbsp;&nbsp;6.基于标准化的并被广泛支持的技术，不需要下载插件或者小程序。&nbsp;<br />&nbsp;&nbsp;7.进一步促进页面呈现和数据的分离。&nbsp;<br /><br /><span style="font-size:5;">四、谁在使用&nbsp;AJAX&nbsp;</span><br /><br />&nbsp;&nbsp;&nbsp;在应用&nbsp;AJAX&nbsp;开发上面，&nbsp;Google&nbsp;当仁不让是表率。&nbsp;Orkut、&nbsp;Gmail、&nbsp;Google&nbsp;Groups、&nbsp;Google&nbsp;Maps、Google&nbsp;Suggest&nbsp;<br />都应用了这项技术。Amazon&nbsp;的&nbsp;A9.com&nbsp;搜索引擎也采用了类似的技术。<br />&nbsp;<br />&nbsp;&nbsp;微软也在积极开发更为完善的AJAX应用：&nbsp;它即将推出代号为Atlas的AJAX工具。&nbsp;Atlas的功能超越了&nbsp;AJAX&nbsp;本身，包括整合&nbsp;Visual&nbsp;Studio&nbsp;的调试功能。另外，新的&nbsp;ASP.NET&nbsp;控件将使客户端控件与服务器端代码的捆绑更为简便。Atlas&nbsp;客户脚本框架（Atlas&nbsp;Clent&nbsp;Script&nbsp;Framework）也使与网页及相关项目的交互更为便利。但&nbsp;Visual&nbsp;Studio&nbsp;2005&nbsp;中并不包含此项功能。<br />&nbsp;<br />微软最近宣布&nbsp;Atlas&nbsp;客户脚本框架将包含如下内容（详细资料请访问&nbsp;Atlas&nbsp;计划网站）&nbsp;：&nbsp;<br />*&nbsp;&nbsp;一个可扩展的核心框架，它添加了&nbsp;JavaScript功能：如生命同时期管理、继承管理、多点传送处理器和界面管理。&nbsp;<br />*&nbsp;&nbsp;一个常见功能的基本类库，有丰富的字符串处理、计时器和运行任务。&nbsp;<br />*&nbsp;&nbsp;为&nbsp;HTML附加动态行为的用户界面框架。&nbsp;<br />*&nbsp;&nbsp;一组用来简化服务器连通和网络访问的网络堆栈。&nbsp;<br />*&nbsp;&nbsp;一组丰富的用户界面开发控件，如：自动完成的文本框、动画和拖放。&nbsp;<br />*&nbsp;&nbsp;处理浏览器脚本行为差异的浏览器兼容层面。&nbsp;<br />典型的，微软将&nbsp;AJAX&nbsp;技术应用在&nbsp;MSN&nbsp;Space&nbsp;上面。很多人一直都对&nbsp;MS&nbsp;Space&nbsp;服务感到很奇怪，当提交回复评论以后，浏览器会暂时停顿一下，然后在无刷新的情况下把我提交的评论显示出来。这个就是应用了&nbsp;AJAX&nbsp;的效果。试想，如果添加一个评论就要重新刷新整个页面，那可真费事。&nbsp;<br />目前，&nbsp;AJAX&nbsp;应用最普遍的领域是&nbsp;GIS-Map&nbsp;方面。&nbsp;GIS的区域搜索强调快速响应，&nbsp;AJAX的特点正好符合这种需求。&nbsp;<br /><br /><span style="font-size:5;">五、用&nbsp;AJAX&nbsp;改进你的设计&nbsp;</span><br /><br />AJAX&nbsp;虽然可以实现无刷新更新页面内容，但是也不是什么地方都可以用，主要应用在交互较多、频繁读数据、数据分类良好<br />的&nbsp;Web&nbsp;应用中。现在，让我们举两个例子，看看如何用&nbsp;AJAX&nbsp;改进你的设计。&nbsp;<br /><br />例子1：数据校验<br />&nbsp;<br />&nbsp;&nbsp;在输入&nbsp;form&nbsp;表单内容的时候，我们通常需要确保数据的唯一性。因此，常常在页面上提供“唯一性校验”按钮，让用户点<br />击，打开一个校验小窗口；或者等&nbsp;form&nbsp;提交到服务器端，由服务器判断后在返回相应的校验信息。前者，window.open&nbsp;操作本来就是比较耗费资源的，通常由&nbsp;window.&nbsp;showModalDialog&nbsp;代替，即使这样也要弹出一个对话框；后者，需要把整个页面<br />提交到服务器并由服务器判断校验，这个过程不仅时间长而且加重了服务器负担。而使用&nbsp;AJAX，这个校验请求可以由&nbsp;<br />XMLHttpRequest&nbsp;对象发出，整个过程不需要弹出新窗口，也不需要将整个页面提交到服务器，快速又不加重服务器负担。<br />&nbsp;<br />例子2：按需取数据—级联菜单&nbsp;<br /><br />&nbsp;&nbsp;以前，为了避免每次对菜单的操作引起的重载页面，不采用每次调用后台的方式，而是一次性将级联菜单的所有数据全部读<br />取出来并写入数组，然后根据用户的操作用&nbsp;JavaScript来控制它的子集项目的呈现，这样虽然解决了操作响应速度、不重载页<br />面以及避免向服务器频繁发送请求的问题，但是如果用户不对菜单进行操作或只对菜单中的一部分进行操作的话，那读取的数<br />据中的一部分就会成为冗余数据而浪费用户的资源，特别是在菜单结构复杂、数据量大的情况下（比如菜单有很多级、每一级<br />菜又有上百个项目），这种弊端就更为突出。&nbsp;&nbsp;<br />&nbsp;&nbsp;现在应用&nbsp;AJAX，在初始化页面时我们只读出它的第一级的所有数据并显示，在用户操作一级菜单其中一项时，会通过&nbsp;Ajax<br />向后台请求当前一级项目所属的二级子菜单的所有数据，如果再继续请求已经呈现的二级菜单中的一项时，再向后面请求所操作二级菜单项对应的所有三级菜单的所有数据，以此类推……这样，用什么就取什么、用多少就取多少，就不会有数据的冗余<br />和浪费，减少了数据下载总量，而且更新页面时不用重载全部内容，只更新需要更新的那部分即可，相对于后台处理并重载的方式缩短了用户等待时间，也把对资源的浪费降到最低。&nbsp;<br /><br />例子3：读取外部数据&nbsp;<br /><br />&nbsp;&nbsp;&nbsp;AJAX&nbsp;可以调用外部数据，因此，可以对一些开发的数据比如&nbsp;XML&nbsp;文档、RSS&nbsp;文档进行二次加工，实现数据整合或者开发<br />应用程序。&nbsp;<br /><br /><span style="font-size:5;">六、AJAX的缺陷&nbsp;</span><br /><br />AJAX&nbsp;不是完美的技术。使用&nbsp;AJAX，它的一些缺陷不得不权衡一下：<br />&nbsp;<br />&nbsp;&nbsp;1.AJAX&nbsp;大量使用了&nbsp;Javascript&nbsp;和&nbsp;AJAX&nbsp;引擎，而这个取决于浏览器的支持。&nbsp;IE5.0&nbsp;及以上、Mozilla1.0、NetScape7&nbsp;及以<br />上版本才支持，Mozilla&nbsp;虽然也支持&nbsp;AJAX，但是提供XMLHttpRequest&nbsp;的方式不一样。所以，使用&nbsp;AJAX&nbsp;的程序必须测试针对各个浏览器的兼容性。&nbsp;<br />&nbsp;&nbsp;2.AJAX&nbsp;更新页面内容的时候并没有刷新整个页面，因此，网页的后退功能是失效的；有的用户还经常搞不清楚现在的数据是旧的还是已经更新过的。这个就需要在明显位置提醒用户“数据已更新”。&nbsp;<br />&nbsp;&nbsp;3.对流媒体的支持没有&nbsp;FLASH、Java&nbsp;Applet&nbsp;好。&nbsp;<br />&nbsp;&nbsp;4.一些手持设备（如手机、PDA等）现在还不能很好的支持&nbsp;Ajax。<br />&nbsp;<br /><div class="quote">&nbsp;&nbsp;本文非发表人原创,原作者信息如下<br />作者&nbsp;&nbsp;网名&nbsp;&nbsp;联络&nbsp;<br />柯自聪&nbsp;&nbsp;eamoi&nbsp;&nbsp;&nbsp;educhina&nbsp;&nbsp;eamoi@163.com（技术）&nbsp;zcke0728@hotmail.com（版权）</div>]]>
      </description>
      <category>AJAX</category>
   </item>
   <item>
      <title>ASP判断文件地址是否有效</title>
      <author>zhanghuiguoanlige@126.com</author>
      <link>http://dev.mo.cn/article_140.html</link>
      <pubDate>2008-10-2 10:17:08</pubDate>
      <guid>http://dev.mo.cn/article_140.html</guid>
      <description>
      <![CDATA[原理xmlhttp组件<br /><div class="code"><div class="code_title"><span> &nbsp;<img src="images/code.gif" alt="" style="padding:0px;border:0px;" /></span>&nbsp;&nbsp;&nbsp;<a href="javascript:void(0);" onclick="window.clipboardData.setData('Text',this.parentNode.parentNode.childNodes[1].outerText);alert('븴Ƴɹ,Ctrl+VճҪλ!!');">ȫ</a></div><div class="code_content">&lt;%<br /><br />Response.Write("&lt;head&gt;&lt;style&gt;&lt;!--span{&nbsp;font-size:&nbsp;9pt&nbsp;}--&gt;&lt;/style&gt;&lt;/head&gt;")<br /><br />On&nbsp;Error&nbsp;Resume&nbsp;Next<br /><br />Dim&nbsp;thisurl,thistext<br /><br />thisurl=Request("thisurl")&nbsp;'定义文件地址(非Html格式文档)!<br /><br />if&nbsp;thisurl=""&nbsp;then<br /><br />Response.Write("&lt;span&gt;请先输入文件地址!&lt;/span&gt;")<br /><br />Response.End<br /><br />End&nbsp;if<br />Function&nbsp;objxmlhttp(xmlurl)<br /><br />On&nbsp;Error&nbsp;Resume&nbsp;Next<br /><br />Set&nbsp;objxml&nbsp;=&nbsp;CreateObject("Microsoft.XMLHTTP")<br /><br />objxml.Open&nbsp;"get",xmlurl,false<br /><br />objxml.setrequestheader&nbsp;"content-type","application/x-www-form-urlencoded"<br /><br />objxml.send<br /><br />objxmlhttp&nbsp;=&nbsp;objxml.responsebody<br /><br />if&nbsp;Err&nbsp;then<br /><br />Err.Clear<br /><br />Response.Write("&lt;span&gt;建立连接失败,文件不存在或网络有问题!;错误原因:"&Err.Description&"！&lt;/span&gt;")<br /><br />Response.End<br /><br />End&nbsp;if<br /><br />End&nbsp;Function<br />Function&nbsp;bytes2BSTR(vIn)<br /><br />strReturn&nbsp;=&nbsp;""<br /><br />For&nbsp;i&nbsp;=&nbsp;1&nbsp;To&nbsp;LenB(vIn)<br /><br />ThisCharCode&nbsp;=&nbsp;AscB(MidB(vIn,i,1))<br /><br />If&nbsp;ThisCharCode&nbsp;&lt;&nbsp;&H80&nbsp;Then<br /><br />strReturn&nbsp;=&nbsp;strReturn&nbsp;&&nbsp;Chr(ThisCharCode)<br /><br />Else<br /><br />NextCharCode&nbsp;=&nbsp;AscB(MidB(vIn,i+1,1))<br /><br />strReturn&nbsp;=&nbsp;strReturn&nbsp;&&nbsp;Chr(CLng(ThisCharCode)&nbsp;*&nbsp;&H100&nbsp;+&nbsp;CInt(NextCharCode))<br /><br />i&nbsp;=&nbsp;i&nbsp;+&nbsp;1<br /><br />End&nbsp;If<br /><br />Next<br /><br />bytes2BSTR&nbsp;=&nbsp;strReturn<br /><br />End&nbsp;Function<br />thisurl2=Split(thisurl,",")<br /><br />For&nbsp;Each&nbsp;ii&nbsp;In&nbsp;thisurl2<br /><br />thistext=bytes2BSTR(objxmlhttp(ii))<br /><br />if&nbsp;InStr(thistext,"&lt;html&gt;")&lt;&gt;0&nbsp;then<br /><br />Response.Write("&lt;span&gt;"&&nbsp;ii&nbsp;&"&nbsp;&lt;b&gt;×&lt;/b&gt;&lt;/span&gt;&lt;br&gt;")<br /><br />Else<br /><br />Response.Write("&lt;span&gt;"&&nbsp;ii&nbsp;&"&nbsp;&lt;b&gt;√&lt;/b&gt;&lt;/span&gt;&lt;br&gt;")<br /><br />End&nbsp;if<br /><br />Next<br />if&nbsp;Err&nbsp;then<br /><br />Err.Clear<br /><br />Response.Write("&lt;span&gt;碰到意外!;错误原因:"&Err.Description&"！&lt;/span&gt;")<br /><br />Response.End<br /><br />End&nbsp;if<br /><br />%&gt;</div></div>]]>
      </description>
      <category>AJAX</category>
   </item>
   <item>
      <title>Asp利用xmlhttp组件抓取页面</title>
      <author>zhanghuiguoanlige@126.com</author>
      <link>http://dev.mo.cn/article_123.html</link>
      <pubDate>2008-9-5 19:11:59</pubDate>
      <guid>http://dev.mo.cn/article_123.html</guid>
      <description>
      <![CDATA[简单的Asp抓取页面代码，取页面编码的正则可能写的不太好，呵呵~&nbsp;<br />和大家分享了~~&nbsp;<br /><div class="code"><div class="code_title"><span> &nbsp;<img src="images/code.gif" alt="" style="padding:0px;border:0px;" /></span>&nbsp;&nbsp;&nbsp;<a href="javascript:void(0);" onclick="window.clipboardData.setData('Text',this.parentNode.parentNode.childNodes[1].outerText);alert('븴Ƴɹ,Ctrl+VճҪλ!!');">ȫ</a></div><div class="code_content"><br />&lt;%<br />on&nbsp;error&nbsp;resume&nbsp;next<br />time1=timer<br />dim&nbsp;reg,vUrl,VBody,temp1,temp2,code,time1,time2,title<br />vUrl=trim(request.form("url"))<br />reg="\&lt;meta.+&nbsp;charset=&nbsp;{0,}([^\""|&nbsp;|\&gt;|\/]*).+\/{0,1}\&gt;"<br />if&nbsp;vUrl&lt;&gt;""&nbsp;then<br />&nbsp;&nbsp;VBody=GetResStr(trim(request.form("url")))<br />&nbsp;&nbsp;temp1=VBody:temp2=VBody<br />&nbsp;&nbsp;code=GetCode(temp1,reg)<br />&nbsp;&nbsp;title=GetCode(temp2,"\&lt;title\&gt;(.*)\&lt;\/title\&gt;")<br />else<br />&nbsp;&nbsp;vUrl="http://"<br />end&nbsp;if<br />time2=timer<br />%&gt;<br />&lt;html&gt;<br />&lt;head&gt;<br />&lt;meta&nbsp;http-equiv="Content-Type"&nbsp;content="text/html;&nbsp;charset=gb2312"&gt;<br />&lt;title&gt;抓取页面&lt;/title&gt;<br />&lt;%if&nbsp;err.number&lt;&gt;0&nbsp;then%&gt;<br />&lt;script&nbsp;language="javascript"&gt;alert('发生错误!\n您输入的URL为\"&lt;%=vUrl%&gt;\"\n请检查您输入的URL是否合法!');&lt;/script&gt;<br />&lt;%end&nbsp;if%&gt;<br />&lt;/head&gt;<br />&lt;body&nbsp;style="font-size:12px;margin:20px&nbsp;0&nbsp;0&nbsp;20px;"&gt;<br />&lt;form&nbsp;name="geturl"&nbsp;action="test.asp"&nbsp;method="post"&gt;<br />请输入合法URL(必须以http://开头):&lt;br&nbsp;/&gt;&lt;input&nbsp;name="url"&nbsp;type="text"&nbsp;size=60&nbsp;value="&lt;%=vUrl%&gt;"/&gt;&lt;br&nbsp;/&gt;<br />&lt;input&nbsp;type="submit"&nbsp;value="抓取"&nbsp;/&gt;&lt;br&nbsp;/&gt;<br />&lt;/form&gt;<br />所用时间:&lt;font&nbsp;color=green&gt;&lt;%=formatnumber((time2-time1)*1000,2)%&gt;MS&lt;/font&gt;&nbsp;&lt;br&nbsp;/&gt;<br />页面标题:&lt;font&nbsp;color=green&gt;&lt;%=title%&gt;&lt;/font&gt;&nbsp;页面编码:&lt;font&nbsp;color=green&gt;&lt;%=code%&gt;&lt;/font&gt;&nbsp;&lt;br&nbsp;/&gt;<br />&lt;textarea&nbsp;cols=150&nbsp;rows=30&gt;&lt;%=VBody%&gt;&lt;/textarea&gt;<br />&lt;/body&gt;<br />&lt;/html&gt;<br /><br />&lt;%&nbsp;<br />function&nbsp;GetResStr(URL)<br />dim&nbsp;ResBody,ResStr,PageCode<br />Set&nbsp;Http=server.createobject("msxml2.serverxmlhttp.3.0")&nbsp;<br />Http.setTimeouts&nbsp;10000,&nbsp;10000,&nbsp;10000,&nbsp;10000&nbsp;<br />Http.open&nbsp;"GET",URL,False&nbsp;<br />Http.Send()&nbsp;<br />If&nbsp;Http.Readystate&nbsp;=4&nbsp;Then&nbsp;<br />&nbsp;&nbsp;If&nbsp;Http.status=200&nbsp;Then<br />&nbsp;&nbsp;&nbsp;&nbsp;ResStr=http.responseText<br />&nbsp;&nbsp;&nbsp;&nbsp;ResBody=http.responseBody<br />&nbsp;&nbsp;&nbsp;&nbsp;PageCode=GetCode(ResStr,reg)<br />&nbsp;&nbsp;&nbsp;&nbsp;GetResStr=BytesToBstr(http.responseBody,PageCode)<br />&nbsp;&nbsp;End&nbsp;If&nbsp;<br />End&nbsp;If&nbsp;<br />End&nbsp;Function<br /><br />'函数名:BytesToBstr<br />'作用:转换二进制数据为字符<br />'参数:Body-二进制数据,Cset-文本编码方式<br />Function&nbsp;BytesToBstr(Body,Cset)&nbsp;<br />&nbsp;&nbsp;Dim&nbsp;Objstream&nbsp;<br />&nbsp;&nbsp;Set&nbsp;Objstream&nbsp;=&nbsp;Server.CreateObject("adodb.stream")&nbsp;<br />&nbsp;&nbsp;objstream.Type&nbsp;=&nbsp;1&nbsp;<br />&nbsp;&nbsp;objstream.Mode&nbsp;=3&nbsp;<br />&nbsp;&nbsp;objstream.Open&nbsp;<br />&nbsp;&nbsp;objstream.Write&nbsp;body&nbsp;<br />&nbsp;&nbsp;objstream.Position&nbsp;=&nbsp;0&nbsp;<br />&nbsp;&nbsp;objstream.Type&nbsp;=&nbsp;2&nbsp;<br />&nbsp;&nbsp;objstream.Charset&nbsp;=&nbsp;Cset&nbsp;<br />&nbsp;&nbsp;BytesToBstr&nbsp;=&nbsp;objstream.ReadText&nbsp;<br />&nbsp;&nbsp;objstream.Close&nbsp;<br />&nbsp;&nbsp;set&nbsp;objstream&nbsp;=&nbsp;nothing&nbsp;<br />End&nbsp;Function<br />&nbsp;<br />'函数名:GetCode<br />'作用:转换二进制为字符<br />'参数:str-待查询字符串,regstr-正则表达式<br />Function&nbsp;GetCode(str,regstr)<br />Dim&nbsp;Reg<br />set&nbsp;Reg=&nbsp;new&nbsp;RegExp<br />Reg.IgnoreCase&nbsp;=&nbsp;True<br />Reg.MultiLine&nbsp;=&nbsp;True<br />Reg.Pattern&nbsp;=regstr<br />Set&nbsp;Cols&nbsp;=&nbsp;Reg.Execute(str)<br />str=Cols(0).SubMatches(0)<br />GetCode=str<br />end&nbsp;function<br />%&gt;&nbsp;</div></div>]]>
      </description>
      <category>AJAX</category>
   </item>
   <item>
      <title>如何解决AJAX中跨域访问出现'没有权限'的错误</title>
      <author>zhanghuiguoanlige@126.com</author>
      <link>http://dev.mo.cn/article_110.html</link>
      <pubDate>2008-8-16 11:07:25</pubDate>
      <guid>http://dev.mo.cn/article_110.html</guid>
      <description>
      <![CDATA[&nbsp;&nbsp;很多人在使用AJAX调用别人站点内容的时候,JS会提示"没有权限"错误，这是XMLHTTP组件的限制-安全起见<br />禁止访问非同域的网站,下面一个例子来访问http://www.google.cn,<br /><div class="code"><div class="code_title"><span> &nbsp;<img src="images/code.gif" alt="" style="padding:0px;border:0px;" /></span>&nbsp;&nbsp;&nbsp;<a href="javascript:void(0);" onclick="window.clipboardData.setData('Text',this.parentNode.parentNode.childNodes[1].outerText);alert('븴Ƴɹ,Ctrl+VճҪλ!!');">ȫ</a></div><div class="code_content"><br />&lt;script&nbsp;type="text/javascript"&gt;<br />&nbsp;function&nbsp;createobj()&nbsp;{<br />&nbsp;if&nbsp;(window.ActiveXObject)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;new&nbsp;ActiveXObject("Microsoft.XMLHTTP");<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;if&nbsp;(window.XMLHttpRequest)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;new&nbsp;XMLHttpRequest();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />}<br /><br />function&nbsp;getWebPage(url)&nbsp;{<br />&nbsp;&nbsp;var&nbsp;oBao=createobj();<br />&nbsp;&nbsp;var&nbsp;my_url=url<br />&nbsp;&nbsp;oBao.open('get',my_url,false);&nbsp;<br />&nbsp;&nbsp;oBao.onreadystatechange=function(){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(oBao.readyState==4){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(oBao.status==200){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;returnStr=oBao.responseText;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;document.write(returnStr);<br />&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;document.write("未找到您输入的地址或服务器505错误!");<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;}<br />&nbsp;&nbsp;oBao.send(null);&nbsp;<br />&nbsp;}<br />getWebPage('http://www.google.cn');<br />&lt;/script&gt;<br /></div></div><br />&nbsp;&nbsp;保存这段代码到test.html,在本地直接用IE打开没问题,但将该段代码上传到服务器后，问题出现了--JS提示"没有权限"错误!!!这该如何解决呢？<br />&nbsp;&nbsp;下面思考一下：既然不能访问非同域的，只能访问同域的地址了，同域的动态文件怎么获取非同域网页内容呢？我们还是想到的AJAX，只不过这个AJAX是在服务器端执行.<br />&nbsp;&nbsp;&nbsp;大体思路是这样的:首先将URL用AJAX提交给自己站内的文件，例如getPage.asp---在getPage.asp再次通过服务器XMLHTTP来访问提交来的URL---将获取的内容返回给提交URL的页----显示内容<br />&nbsp;&nbsp;下面开始组织代码,首先是test.html文件<br />&nbsp;&nbsp;<div class="code"><div class="code_title"><span> &nbsp;<img src="images/code.gif" alt="" style="padding:0px;border:0px;" /></span>&nbsp;&nbsp;&nbsp;<a href="javascript:void(0);" onclick="window.clipboardData.setData('Text',this.parentNode.parentNode.childNodes[1].outerText);alert('븴Ƴɹ,Ctrl+VճҪλ!!');">ȫ</a></div><div class="code_content"><br />&lt;script&nbsp;type="text/javascript"&gt;<br />&nbsp;function&nbsp;createobj()&nbsp;{<br />&nbsp;if&nbsp;(window.ActiveXObject)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;new&nbsp;ActiveXObject("Microsoft.XMLHTTP");<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;if&nbsp;(window.XMLHttpRequest)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;new&nbsp;XMLHttpRequest();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />}<br /><br />function&nbsp;getWebPage(url)&nbsp;{<br />&nbsp;&nbsp;var&nbsp;oBao=createobj();<br />&nbsp;&nbsp;var&nbsp;my_url="getpage.asp?url="+escape(url);<br />&nbsp;&nbsp;oBao.open('get',my_url,false);&nbsp;<br />&nbsp;&nbsp;oBao.onreadystatechange=function(){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(oBao.readyState==4){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(oBao.status==200){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;returnStr=oBao.responseText;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;document.write(returnStr);<br />&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;document.write("未找到您输入的地址或服务器505错误!");<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;}<br />&nbsp;&nbsp;oBao.send(null);&nbsp;<br />&nbsp;}<br />getWebPage('http://www.google.cn');<br />&lt;/script&gt;<br /></div></div><br /><br />再就是getpage.asp文件(注意:要以UTF-8格式保存本文件,防止乱码),如下:<br /><div class="code"><div class="code_title"><span> &nbsp;<img src="images/code.gif" alt="" style="padding:0px;border:0px;" /></span>&nbsp;&nbsp;&nbsp;<a href="javascript:void(0);" onclick="window.clipboardData.setData('Text',this.parentNode.parentNode.childNodes[1].outerText);alert('븴Ƴɹ,Ctrl+VճҪλ!!');">ȫ</a></div><div class="code_content"><br />&lt;%<br />response.charset="UTF-8"<br />reg="\&lt;meta.+&nbsp;charset=&nbsp;{0,}([^\""&nbsp;\&gt;\/]*).+\/{0,1}\&gt;"<br />'函数名:GetResStr<br />'作用:获取指定URL的HTML代码<br />'参数:URL-要获取的URL<br />function&nbsp;GetResStr(URL)<br />err.clear<br />dim&nbsp;ResBody,ResStr,PageCode,ReturnStr<br />Set&nbsp;Http=createobject("MiCROSOFT.XMLHTTP")&nbsp;<br />Http.open&nbsp;"GET",URL,False&nbsp;<br />Http.Send()&nbsp;<br />If&nbsp;Http.Readystate&nbsp;=4&nbsp;Then&nbsp;<br />&nbsp;&nbsp;If&nbsp;Http.status=200&nbsp;Then<br />&nbsp;&nbsp;&nbsp;&nbsp;ResStr=http.responseText<br />&nbsp;&nbsp;&nbsp;&nbsp;ResBody=http.responseBody<br />&nbsp;&nbsp;&nbsp;&nbsp;PageCode=GetCode(ResStr,reg)<br />&nbsp;&nbsp;&nbsp;&nbsp;ReturnStr=BytesToBstr(http.responseBody,PageCode)<br />&nbsp;&nbsp;&nbsp;&nbsp;GetResStr=ReturnStr<br />&nbsp;&nbsp;End&nbsp;If&nbsp;<br />End&nbsp;If&nbsp;<br />End&nbsp;Function<br /><br />'函数名:BytesToBstr<br />'作用:转换二进制数据为字符<br />'参数:Body-二进制数据,Cset-文本编码方式<br />Function&nbsp;BytesToBstr(Body,Cset)&nbsp;<br />&nbsp;&nbsp;Dim&nbsp;Objstream&nbsp;<br />&nbsp;&nbsp;Set&nbsp;Objstream&nbsp;=&nbsp;CreateObject("adodb.stream")&nbsp;<br />&nbsp;&nbsp;objstream.Type&nbsp;=&nbsp;1&nbsp;<br />&nbsp;&nbsp;objstream.Mode&nbsp;=3&nbsp;<br />&nbsp;&nbsp;objstream.Open&nbsp;<br />&nbsp;&nbsp;objstream.Write&nbsp;body&nbsp;<br />&nbsp;&nbsp;objstream.Position&nbsp;=&nbsp;0&nbsp;<br />&nbsp;&nbsp;objstream.Type&nbsp;=&nbsp;2&nbsp;<br />&nbsp;&nbsp;objstream.Charset&nbsp;=Cset&nbsp;<br />&nbsp;&nbsp;BytesToBstr&nbsp;=&nbsp;objstream.ReadText&nbsp;<br />&nbsp;&nbsp;objstream.Close&nbsp;<br />&nbsp;&nbsp;set&nbsp;objstream&nbsp;=&nbsp;nothing&nbsp;<br />End&nbsp;Function<br />&nbsp;<br />'函数名:GetCode<br />'作用:提取网页编码<br />'参数:str-待查询字符串,regstr-正则表达式<br />Function&nbsp;GetCode(str,regstr)<br />Dim&nbsp;Reg,serStr<br />set&nbsp;Reg=&nbsp;new&nbsp;RegExp<br />Reg.IgnoreCase&nbsp;=&nbsp;True<br />Reg.MultiLine&nbsp;=&nbsp;True<br />Reg.Pattern&nbsp;=regstr<br />if&nbsp;Reg.test(str)&nbsp;then&nbsp;'若查询到匹配项<br />&nbsp;&nbsp;&nbsp;Set&nbsp;Cols&nbsp;=&nbsp;Reg.Execute(str)<br />&nbsp;&nbsp;&nbsp;serStr=Cols(0).SubMatches(0)&nbsp;'使用匹配到的第一个匹配项<br />else&nbsp;'否则给个默认值gb2312,有点省懒法，如果页面没给出编码格式，想知道确实有点麻烦<br />&nbsp;&nbsp;&nbsp;serStr="gb2312"<br />end&nbsp;if<br />GetCode=serStr<br />end&nbsp;function<br /><br />dim&nbsp;url:url=request.querystring("url")<br />response.write&nbsp;GetResStr(URL)<br />%&gt;<br /></div></div><br /><br />&nbsp;&nbsp;代码组织完毕,实验下,成功提取http://www.google.cn的内容!!!!!这样就可以解决"没有权限"的问题了。&nbsp;<br />&nbsp;&nbsp;其实,单纯一个getpage.asp一样能获取，不过不能像js那样动态的处理DOM。<br />&nbsp;&nbsp;还有一个问题,如果你用第一种方法访问http://www.baidu.com会出现乱码,因为baidu编码为GB2312,<br />而XMLHTTP返回的是UTF-8编码格式。用第二种方法就不会出现这样的问题了,只要定义了编码格式的站点就能正常返回信息(这里不能包括一些使用特别编码的站点)。<br /><br /><br /><br /><br /><br />]]>
      </description>
      <category>AJAX</category>
   </item>
   <item>
      <title>利用404错误页面实现UrlRewrite</title>
      <author>zhanghuiguoanlige@126.com</author>
      <link>http://dev.mo.cn/article_102.html</link>
      <pubDate>2008-8-9 10:37:25</pubDate>
      <guid>http://dev.mo.cn/article_102.html</guid>
      <description>
      <![CDATA[要求:网站编码为utf-8,不适用于GB2312;<br />替换字符的正则可以自己增加和修改，以适合自己的网站；<br />将下面代码保存到err404.html，然后设置404错误页面为err404.html页；<br />测试地址<a href="http://bbs.ii-home.cn/html/index.html" target="new">http://bbs.ii-home.cn/html/index.html</a><br />注:转载请注明本出处!谢谢!<br /><div class="code"><div class="code_title"><span> &nbsp;<img src="images/code.gif" alt="" style="padding:0px;border:0px;" /></span>&nbsp;&nbsp;&nbsp;<a href="javascript:void(0);" onclick="window.clipboardData.setData('Text',this.parentNode.parentNode.childNodes[1].outerText);alert('븴Ƴɹ,Ctrl+VճҪλ!!');">ȫ</a></div><div class="code_content"><br />&lt;script&nbsp;type="text/javascript"&nbsp;language="javascript"&gt;<br />var&nbsp;id=/(detial|show)\.asp\?id\=([0-9]+)/gi;<br />var&nbsp;flag=/([a-z0-9_]+)\.asp\?flag\=xml/gi;<br />var&nbsp;re_id=/(detial|show)\_([0-9]+)\.html/gi;<br />var&nbsp;re_flag=/([a-z0-9_]+)\.rss/gi;<br />var&nbsp;host='blog.ii-home.cn';<br />var&nbsp;ss=window.location.href;<br />//ss=ss.replace(window.location.hostname,host);<br />var&nbsp;Temp=getasp(ss);<br />getNotice(Temp);<br /><br />function&nbsp;createobj()&nbsp;{<br />&nbsp;if&nbsp;(window.ActiveXObject)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;new&nbsp;ActiveXObject("Microsoft.XMLHTTP");<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;if&nbsp;(window.XMLHttpRequest)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;new&nbsp;XMLHttpRequest();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />}<br /><br />function&nbsp;getNotice(url)&nbsp;{<br />&nbsp;&nbsp;var&nbsp;oBao=createobj();<br />&nbsp;&nbsp;var&nbsp;my_url=url;<br />&nbsp;&nbsp;oBao.open('get',my_url,false);&nbsp;<br />&nbsp;&nbsp;oBao.onreadystatechange=function(){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(oBao.readyState==4){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(oBao.status==200){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;returnStr=oBao.responseText;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;Temps=gethtml(returnStr);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;document.write(Temps);<br />&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;document.write("未找到您输入的地址或服务器505错误!");<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;}<br />&nbsp;&nbsp;oBao.send(null);&nbsp;<br />&nbsp;}<br />&nbsp;<br />//将str中的asp网址按照正则替换<br />function&nbsp;gethtml(str){<br />&nbsp;&nbsp;var&nbsp;Temp_str=str.replace(id,'$1_$2.html');<br />&nbsp;&nbsp;Temp_str=Temp_str.replace(/index\.asp/gi,'index.html');<br />&nbsp;&nbsp;Temp_str=Temp_str.replace(/myfiles\.asp/gi,'myfiles.html');<br />&nbsp;&nbsp;Temp_str=Temp_str.replace(/mydiary\.asp\?typ\=self/gi,'mydiary_self.html');<br />&nbsp;&nbsp;Temp_str=Temp_str.replace(/mydiary\.asp/gi,'mydiary.html');<br />&nbsp;&nbsp;Temp_str=Temp_str.replace(flag,'$1.rss');<br />&nbsp;&nbsp;Temp_str=Temp_str.replace(/xml_diary\.asp/gi,'xml_diary.html');<br />&nbsp;&nbsp;Temp_str=Temp_str.replace(/xml_download\.asp/gi,'xml_download.html');<br />&nbsp;&nbsp;Temp_str=Temp_str.replace(/xml_links\.asp/gi,'xml_links.html');<br />&nbsp;&nbsp;Temp_str=Temp_str.replace(/xml_ly\.asp/gi,'xml_ly.html');<br />&nbsp;&nbsp;Temp_str=Temp_str.replace(/ly\.asp/gi,'ly.html');<br />&nbsp;&nbsp;//Temp_str=Temp_str.replace(/href=\"(http){0}/gi,'href="http://blog.ii-home.cn/');<br />&nbsp;&nbsp;return(Temp_str);<br />}<br /><br />//将URL替换成原地址<br />function&nbsp;getasp(str){<br />&nbsp;&nbsp;var&nbsp;Temp_str=str.replace(re_id,'$1.asp?id=$2');<br />&nbsp;&nbsp;Temp_str=Temp_str.replace(/index\.html/gi,'index.asp');<br />&nbsp;&nbsp;Temp_str=Temp_str.replace(/myfiles\.html/gi,'myfiles.asp');<br />&nbsp;&nbsp;Temp_str=Temp_str.replace(/mydiary\.html/gi,'mydiary.asp');<br />&nbsp;&nbsp;Temp_str=Temp_str.replace(/mydiary\_self.html/gi,'mydiary.asp?typ=self');<br />&nbsp;&nbsp;Temp_str=Temp_str.replace(/xml_diary\.html/gi,'xml_diary.asp');<br />&nbsp;&nbsp;Temp_str=Temp_str.replace(/xml_download\.html/gi,'xml_download.asp');<br />&nbsp;&nbsp;Temp_str=Temp_str.replace(/xml_links\.html/gi,'xml_links.asp');<br />&nbsp;&nbsp;Temp_str=Temp_str.replace(/xml_ly\.html/gi,'xml_ly.asp');<br />&nbsp;&nbsp;Temp_str=Temp_str.replace(/ly\.html/gi,'ly.asp');<br />&nbsp;&nbsp;Temp_str=Temp_str.replace(re_flag,'$1.asp?flag=xml');<br />&nbsp;&nbsp;return(Temp_str);<br />}<br />&lt;/script&gt;<br /></div></div><br /><br />测试地址<a href="http://bbs.ii-home.cn/html/index.html" target="new">http://bbs.ii-home.cn/html/index.html</a><br /><br /><br />]]>
      </description>
      <category>AJAX</category>
   </item>
   <item>
      <title>AJAX框架代码</title>
      <author>zhanghuiguoanlige@126.com</author>
      <link>http://dev.mo.cn/article_99.html</link>
      <pubDate>2008-8-1 3:21:11</pubDate>
      <guid>http://dev.mo.cn/article_99.html</guid>
      <description>
      <![CDATA[<div class="code"><div class="code_title"><span> &nbsp;<img src="images/code.gif" alt="" style="padding:0px;border:0px;" /></span>&nbsp;&nbsp;&nbsp;<a href="javascript:void(0);" onclick="window.clipboardData.setData('Text',this.parentNode.parentNode.childNodes[1].outerText);alert('븴Ƴɹ,Ctrl+VճҪλ!!');">ȫ</a></div><div class="code_content"><br />var&nbsp;XMLHttp&nbsp;=&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;_objPool:&nbsp;[],<br />&nbsp;&nbsp;&nbsp;&nbsp;_getInstance:&nbsp;function&nbsp;()&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(var&nbsp;i&nbsp;=&nbsp;0;&nbsp;i&nbsp;&lt;&nbsp;this._objPool.length;&nbsp;i&nbsp;++)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(this._objPool[i].readyState&nbsp;==&nbsp;0&nbsp;||&nbsp;this._objPool[i].readyState&nbsp;==&nbsp;4)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;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;//&nbsp;IE5中不支持push方法<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this._objPool[this._objPool.length]&nbsp;=&nbsp;this._createObj();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;this._objPool[this._objPool.length&nbsp;-&nbsp;1];<br />&nbsp;&nbsp;&nbsp;&nbsp;},<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;_createObj:&nbsp;function&nbsp;()&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(window.XMLHttpRequest)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;objXMLHttp&nbsp;=&nbsp;new&nbsp;XMLHttpRequest();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;else&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;MSXML&nbsp;=&nbsp;['MSXML2.XMLHTTP.5.0',&nbsp;'MSXML2.XMLHTTP.4.0',&nbsp;'MSXML2.XMLHTTP.3.0',&nbsp;'MSXML2.XMLHTTP',&nbsp;'Microsoft.XMLHTTP'];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for(var&nbsp;n&nbsp;=&nbsp;0;&nbsp;n&nbsp;&lt;&nbsp;MSXML.length;&nbsp;n&nbsp;++)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;try&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;objXMLHttp&nbsp;=&nbsp;new&nbsp;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)&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;&nbsp;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;mozilla某些版本没有readyState属性<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(objXMLHttp.readyState&nbsp;==&nbsp;null)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;objXMLHttp.readyState&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;objXMLHttp.addEventListener("load",&nbsp;function&nbsp;()&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;objXMLHttp.readyState&nbsp;=&nbsp;4;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(typeof&nbsp;objXMLHttp.onreadystatechange&nbsp;==&nbsp;"function")&nbsp;{<br />&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;}<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 />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;objXMLHttp;<br />&nbsp;&nbsp;&nbsp;&nbsp;},<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;发送请求(方法[post,get],&nbsp;地址,&nbsp;数据,&nbsp;回调函数)<br />&nbsp;&nbsp;&nbsp;&nbsp;sendReq:&nbsp;function&nbsp;(method,&nbsp;url,&nbsp;data,&nbsp;callback,&nbsp;i)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;objXMLHttp&nbsp;=&nbsp;this._getInstance();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;with(objXMLHttp)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;try&nbsp;{<br />&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;if&nbsp;(url.indexOf("?")&nbsp;&gt;&nbsp;0)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;url&nbsp;+=&nbsp;"&randnum="&nbsp;+&nbsp;Math.random();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;else&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;url&nbsp;+=&nbsp;"?randnum="&nbsp;+&nbsp;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,&nbsp;url,&nbsp;true);<br /><br />&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;setRequestHeader('Content-Type',&nbsp;'application/x-www-form-urlencoded');<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&nbsp;=&nbsp;function&nbsp;()&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(objXMLHttp.readyState&nbsp;==&nbsp;4&nbsp;&&&nbsp;(objXMLHttp.status&nbsp;==&nbsp;200&nbsp;||&nbsp;objXMLHttp.status&nbsp;==&nbsp;304))&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,&nbsp;i);<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)&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 />};<br /></div></div><br />]]>
      </description>
      <category>AJAX</category>
   </item>
   <item>
      <title>小偷程序原理--xmlhttp组件</title>
      <author>zhanghuiguoanlige@126.com</author>
      <link>http://dev.mo.cn/article_91.html</link>
      <pubDate>2008-7-20 18:45:16</pubDate>
      <guid>http://dev.mo.cn/article_91.html</guid>
      <description>
      <![CDATA[一般来说，我们做网站，数据都是在我们自己的数据库中的，但有些数据，我们不想也不能自己去收集数据，比如新闻＼天气预报，（我们无法天天更新），所以我们就需要借助别人的网站来显示这些内容&nbsp;。但如果直接链接到别人的网站，那就不是自己的站点了，所以我们通过xmlhttp对象来在后台把别人的网页内容载入到内存中，经过筛选，将别人的网页内容显示出来&nbsp;，这就是所谓的“小偷程序”。&nbsp;<br /><br /><br />小偷程序实际上是通过了XML中的XMLHTTP组件调用其它网站上的网页，动态载入内存后，再对别人网页的内容进行分析过滤。所以，原则上只要别人网页上能显示出来的信息，你都可以使用（关于连接，一般的下载网站的连接你是截不到的，因为它进行了隐藏）。现在有很多新闻小偷程序，很多都是调用了sina的新闻网页，对其中的html进行了一些替换，同时对广告也进行过滤。除了新闻截取，你还可以利用小偷程序去截取一些别的信息，比如天气预报等。<br /><br />小偷程序的优点有：<br />1、无须维护网站，因为小偷程序中的数据来自其他网站，它将随着该网站的更新而更新；<br />2、可以节省服务器资源，一般小偷程序就几个文件，所有网页内容都是来自其他网站。&nbsp;<br /><br /><br />其缺点有：<br />1、不稳定，如果目标网站出错，程序也会出错。目标网站进行升级维护，小偷程序也要进行相应修改；<br />2、速度慢，因为是远程调用，速度和在本地服务器上读取数据比起来，肯定要慢一些。&nbsp;<br /><br /><br />小偷程序一般是使用xmlhttp组件来下载别人的网页，将别人的网页内容载到了你的内存中，再经过分析，过滤掉不需要的内容，最终实现按照自己的格式来显示内容。比如这个网页：http://www.itb2b.com.cn/thief/index.asp&nbsp;，就是截取了新浪的内容。&nbsp;<br /><br /><br />以下是小偷程序代码：<br /><div class="code"><div class="code_title"><span> &nbsp;<img src="images/code.gif" alt="" style="padding:0px;border:0px;" /></span>&nbsp;&nbsp;&nbsp;<a href="javascript:void(0);" onclick="window.clipboardData.setData('Text',this.parentNode.parentNode.childNodes[1].outerText);alert('븴Ƴɹ,Ctrl+VճҪλ!!');">ȫ</a></div><div class="code_content"><br />&lt;%<br />'常用函数<br />'1、输入url目标网页地址，返回值getHTTPPage是目标网页的html代码<br /><br />function&nbsp;getHTTPPage(url)<br />dim&nbsp;Http<br />set&nbsp;Http=server.createobject("MSXML2.XMLHTTP")<br />Http.open&nbsp;"GET",url,false<br />Http.send()<br />if&nbsp;Http.readystate&lt;&gt;4&nbsp;then&nbsp;<br />exit&nbsp;function<br />end&nbsp;if<br />getHTTPPage=bytesToBSTR(Http.responseBody,"GB2312")<br />set&nbsp;http=nothing<br />if&nbsp;err.number&lt;&gt;0&nbsp;then&nbsp;err.Clear&nbsp;<br />end&nbsp;function<br />%&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /></div></div><br />换句话说，要做小偷程序，你必须了解xmlhttp组件的使用。微软提供的Microsoft.XMLHTTP对象，能够完成从数据包到Request对象的转换以及发送任务。<br /><br />XMLHTTP对象及其方法:<br />创建XMLHTTP对象的语句如下：&nbsp;<br /><br />Set&nbsp;objXML&nbsp;=&nbsp;CreateObject("Msxml2.XMLHTTP")&nbsp;<br />或<br />Set&nbsp;objXML&nbsp;=&nbsp;CreateObject(“Microsoft.XMLHTTP”)<br />其中Set&nbsp;objXML&nbsp;=&nbsp;CreateObject("Msxml2.XMLHTTP")是最新的版本<br /><br />对象创建后调用Open方法对Request对象进行初始化，语法格式为：&nbsp;<br />poster.open&nbsp;http-method,&nbsp;url,&nbsp;async,&nbsp;userID,&nbsp;password&nbsp;<br />Open方法中包含了5个参数，前三个是必要的，后两个是可选的(在服务器需要进行身份验证时提供)。<br />参数的含义如下所示：&nbsp;&nbsp;<br />http-method：&nbsp;HTTP的通信方式，比如GET或是&nbsp;POST&nbsp;<br />url：&nbsp;接收XML数据的服务器的URL地址。通常在URL中要指明ASP或CGI程序&nbsp;<br />async：&nbsp;一个布尔标识，说明请求是否为异步的。如果是异步通信方式(true)，客户机就不等待服务器的响应；如果是同步方式(false)，客户机就要等到服务器返回消息后才去执行其他操作&nbsp;<br />userID：用户ID，用于服务器身份验证&nbsp;<br />password：用户密码，用于服务器身份验证&nbsp;<br /><br />比如，我们要调用百度的网页，我们可以：&nbsp;<br />dim&nbsp;Http<br />set&nbsp;Http=server.createobject("MSXML2.XMLHTTP")<br />Http.open&nbsp;"GET","http://www.baidu.com",false<br />Http.send()<br /><br />Send方法是用来发送XML数据的，用法如下：<br />poster.send()&nbsp;&nbsp;<br /><br />如果不用send来发参数，而你要调用的网页又要接收参数，可以这样简单处理<br />dim&nbsp;Http<br />set&nbsp;Http=server.createobject("MSXML2.XMLHTTP")<br />Http.open&nbsp;"GET","http://要调用的网页?id=1&name=abc",false<br />Http.send()&nbsp;<br />Http.send()以后，xmlhttp对象会返回一个对象，这个对象里面就包含了所调用网页的内容，就象从浏览器里打开一样，只不过网页内容是在内存中，还没有显示出来。但在调用过程中可能会出错，所以XMLHTTP对象中的readyState属性能够反映出服务器在处理请求时的进展状况。<br /><br />0&nbsp;Response对象已经创建，但XML文档上载过程尚未结束&nbsp;<br />1&nbsp;XML文档已经装载完毕&nbsp;<br />2&nbsp;XML文档已经装载完毕，正在处理中&nbsp;<br />3&nbsp;部分XML文档已经解析&nbsp;<br />4&nbsp;文档已经解析完毕，客户端可以接受返回消息&nbsp;<br /><br />所以我们一般这样处理:<br />dim&nbsp;Http<br />set&nbsp;Http=server.createobject("MSXML2.XMLHTTP")<br />Http.open&nbsp;"GET","http://要调用的网页?id=1&name=abc",false<br />Http.send()<br />'检查是否完成，readystate值为４说明载入完毕<br />if&nbsp;Http.readystate&lt;&gt;4&nbsp;then<br />&nbsp;&nbsp;&nbsp;exit&nbsp;function&nbsp;<br />end&nbsp;if&nbsp;&nbsp;<br /><br />Http.send()后，经检测Http.readystate==4，说明载入完毕，这时网页内容已经载入到了Http.responseBody中了&nbsp;，但是如果是中文网页，Http.responseBody中会有乱码，这需要我们转换一下乱码&nbsp;，所以完整的调用是这样的：<br />dim&nbsp;http&nbsp;<br />set&nbsp;http=Server.createobject("Microsoft.XMLHTTP")&nbsp;<br />Http.open&nbsp;"GET","你要调用的网址",false&nbsp;<br />Http.send()&nbsp;<br />if&nbsp;Http.readystate&lt;&gt;4&nbsp;then　'如果不等于4，说明出错了<br />&nbsp;&nbsp;&nbsp;exit&nbsp;function&nbsp;<br />end&nbsp;if&nbsp;<br />getHTTPPage=bytesToBSTR(Http.responseBody,"GB2312")<br />set&nbsp;http=nothing&nbsp;<br />其中,bytesToBSTR是一个自己写的函数&nbsp;<br /><div class="code"><div class="code_title"><span> &nbsp;<img src="images/code.gif" alt="" style="padding:0px;border:0px;" /></span>&nbsp;&nbsp;&nbsp;<a href="javascript:void(0);" onclick="window.clipboardData.setData('Text',this.parentNode.parentNode.childNodes[1].outerText);alert('븴Ƴɹ,Ctrl+VճҪλ!!');">ȫ</a></div><div class="code_content"><br />Function&nbsp;BytesToBstr(body,Cset)<br />&nbsp;&nbsp;dim&nbsp;objstream<br />&nbsp;&nbsp;set&nbsp;objstream&nbsp;=&nbsp;Server.CreateObject("adodb.stream")<br />&nbsp;&nbsp;objstream.Type&nbsp;=&nbsp;1<br />&nbsp;&nbsp;objstream.Mode&nbsp;=3<br />&nbsp;&nbsp;objstream.Open<br />&nbsp;&nbsp;objstream.Write&nbsp;body<br />&nbsp;&nbsp;objstream.Position&nbsp;=&nbsp;0<br />&nbsp;&nbsp;objstream.Type&nbsp;=&nbsp;2<br />&nbsp;&nbsp;objstream.Charset&nbsp;=&nbsp;Cset<br />&nbsp;&nbsp;BytesToBstr&nbsp;=&nbsp;objstream.ReadText&nbsp;<br />&nbsp;&nbsp;objstream.Close<br />&nbsp;&nbsp;set&nbsp;objstream&nbsp;=&nbsp;nothing<br />End&nbsp;Function&nbsp;<br /></div></div><br />所以，getHTTPPage=bytesToBSTR(Http.responseBody,"GB2312")表示，将Http.responseBody的内容按GB2312编码转换一下，放到getHTTPPage变量中。<br />最后，你再对getHTTPPage变量进行分析，取出你想显示的数据就行了。<br /><br />需要注意的是,BytesToBstr函数中用到了adodb.stream组件，这需要你的服务器有执行它的权限。<br /><br />下面我们讲个实例，我们显示一下新浪的新闻。要想显示新浪的新闻，我们就要先找到新浪的新闻网址是什么。新浪有个动态新闻页网址：http://news.sina.com.cn/old1000/news1000_日期.shtml&nbsp;。比如，我们要显示6月18日的新闻，就输入<br />http://news.sina.com.cn/old1000/news1000_20050618.shtml&nbsp;，打开网页你会发现是一个新闻列表，下面我们就要分析一下它的结构，右键查看源代码。里面很乱，但你可以找到&lt;!--新闻开始--&gt;和&lt;!--新闻结束--&gt;，中间的内容就是列表的内容。好了，也就是我说，我们想显示6月18号的新闻，就这样调用：<br />dim&nbsp;http&nbsp;<br />set&nbsp;http=Server.createobject("Microsoft.XMLHTTP")&nbsp;<br />Http.open&nbsp;"GET","http://news.sina.com.cn/old1000/news1000_20050618.shtml",false&nbsp;<br />Http.send()&nbsp;<br />if&nbsp;Http.readystate&lt;&gt;4&nbsp;then<br />&nbsp;&nbsp;&nbsp;exit&nbsp;function&nbsp;<br />end&nbsp;if&nbsp;<br />getHTTPPage=bytesToBSTR(Http.responseBody,"GB2312")<br />set&nbsp;http=nothing<br />start=Instr(wstr,"&lt;!--新闻开始--&gt;")<br />over=Instr(wstr,"&lt;!--新闻结束--&gt;")<br />wstr=mid(wstr,start+11,over-start-11)<br /><br />这样wstr就是新闻列表的内容。为什么start+11和over-start-11呢？因为&lt;!--新闻开始--&gt;和&lt;!--新闻结束--&gt;都是11的长度。wstr取出来后，还要进行分析,把它的网址链接替换成你的链接，把不必要的字符过滤掉，这个工作很烦琐，你可以用replace或者用正则表达式来替换,比如：<br />wstr=replace(wstr,"href=""","href=""show.asp?url=")<br />wstr=replace(wstr,"&lt;ul&gt;","")<br />wstr=trim(replace(wstr,"&lt;/ul&gt;",""))&nbsp;'完成对页面内容的截取加工<br />wstr=Replace(wstr,"http://news.sina.com.cn","NewsNews")<br />wstr=Replace(wstr,"http://tech.sina.com.cn","TechNews")<br />wstr=Replace(wstr,"http://sports.sina.com.cn","SportsNews")<br />wstr=Replace(wstr,"http://ent.sina.com.cn","EntNews")<br />wstr=Replace(wstr,"http://eladies.sina.com.cn","EladiesNews")<br />wstr=Replace(wstr,"http://jczs.sina.com.cn","jczs")<br />wstr=Replace(wstr,"http://auto.sina.com.cn","AutoNews")<br />wstr=Replace(wstr,"http://finance.sina.com.cn","FinanceNews")<br />wstr=Replace(wstr,"http://www.eladies.com.cn","wwwEladies")&nbsp;<br /><br /><br /><br /><br />]]>
      </description>
      <category>AJAX</category>
   </item>
   <item>
      <title>VBScript下载文件</title>
      <author>zhanghuiguoanlige@126.com</author>
      <link>http://dev.mo.cn/article_86.html</link>
      <pubDate>2008-7-16 3:38:49</pubDate>
      <guid>http://dev.mo.cn/article_86.html</guid>
      <description>
      <![CDATA[把下面代码保存到一个文本文件,修改后缀为.vbs,然后运行,就能下载文件了，最好不要下载大文件，很耗时间的~<br /><div class="code"><div class="code_title"><span> &nbsp;<img src="images/code.gif" alt="" style="padding:0px;border:0px;" /></span>&nbsp;&nbsp;&nbsp;<a href="javascript:void(0);" onclick="window.clipboardData.setData('Text',this.parentNode.parentNode.childNodes[1].outerText);alert('븴Ƴɹ,Ctrl+VճҪλ!!');">ȫ</a></div><div class="code_content"><br />'函数名:WritFile<br />'作用:把指定二进制数据写入文件<br />'参数:byt--二进制数据,file--要写入的文件名<br />Function&nbsp;WritFile(byt,file)&nbsp;'写入文件函数<br />&nbsp;&nbsp;&nbsp;SavePath=file<br />&nbsp;&nbsp;&nbsp;Set&nbsp;objAso&nbsp;=&nbsp;CreateObject("ADODB.Stream")<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;objAso.Type=1<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;objAso.Mode&nbsp;=&nbsp;3<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;objAso.Open&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;objAso.Position&nbsp;=0<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;objAso.Write&nbsp;byt<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;objAso.SaveToFile&nbsp;SavePath,2<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;objAso.Close<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;set&nbsp;objAso=nothing<br />End&nbsp;Function<br /><br />'函数名:GetRes<br />'作用:下载文件<br />'参数:URL-要获取的URL<br />function&nbsp;GetRes(URL)<br />dim&nbsp;ResBody,ResStr,PageCode,ReturnStr<br />sPos=InStrRev(URL,"/")+1<br />sStr=mid(url,sPos)<br />Set&nbsp;Http=createobject("MiCROSOFT.XMLHTTP")&nbsp;<br />Http.open&nbsp;"GET",URL,False&nbsp;<br />Http.Send()&nbsp;<br />If&nbsp;Http.Readystate&nbsp;=4&nbsp;Then&nbsp;<br />&nbsp;&nbsp;If&nbsp;Http.status=200&nbsp;Then<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ResBody=http.responseBody<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;head=Http.getResponseHeader("content-disposition")<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;head&lt;&gt;""&nbsp;then&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;startPos=instr(head,"=")+1<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;filename=mid(head,startPos)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;elseif&nbsp;instr(sStr,".")&gt;0&nbsp;then<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;filename=sStr<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;filename=getname()&".dat"<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end&nbsp;if<br />&nbsp;&nbsp;&nbsp;&nbsp;WritFile&nbsp;ResBody,"c:\"&filename<br />&nbsp;&nbsp;&nbsp;&nbsp;GetRes=filename<br />&nbsp;&nbsp;End&nbsp;If&nbsp;<br />End&nbsp;If&nbsp;<br />End&nbsp;Function<br /><br />'函数名:getname<br />'作用:按日期获取随机数字<br />function&nbsp;getname()<br />&nbsp;&nbsp;&nbsp;&nbsp;newname=now()<br />&nbsp;&nbsp;&nbsp;&nbsp;newname=replace(newname,"&nbsp;","")<br />&nbsp;&nbsp;&nbsp;&nbsp;newname=replace(newname,".","")<br />&nbsp;&nbsp;&nbsp;&nbsp;newname=replace(newname,":","")<br />&nbsp;&nbsp;&nbsp;&nbsp;newname=replace(newname,"-","")&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;newname=replace(newname,"上午","am")<br />&nbsp;&nbsp;&nbsp;&nbsp;newname=replace(newname,"下午","pm")<br />&nbsp;&nbsp;&nbsp;&nbsp;Randomize()<br />&nbsp;&nbsp;&nbsp;&nbsp;newname=newname&cstr(int(Rnd()*10))<br />&nbsp;&nbsp;&nbsp;&nbsp;Randomize()<br />&nbsp;&nbsp;&nbsp;&nbsp;newname=newname&cstr(int(Rnd()*10))<br />&nbsp;&nbsp;&nbsp;&nbsp;getname=newname<br />end&nbsp;function<br /><br />dim&nbsp;str,time1,time2,tim,f_name,speed<br />str=""<br />time1=timer<br />f_name=GetRes("http://25.duote.org/Fetion2008.exe")<br />time2=timer<br />tim=formatnumber((time2-time1)*1000,2)<br />str=str&"文件"""&f_name&"""下载完毕,耗时"&tim&"MS!"&vbcrlf<br />str=str&"保存在C:\根目录下！"&vbcrlf<br />msgbox&nbsp;str,vbinformation,"下载完毕!"<br /></div></div><br /><br /><br /><br /><br /><br />]]>
      </description>
      <category>AJAX</category>
   </item>
   <item>
      <title>VBScript小偷</title>
      <author>zhanghuiguoanlige@126.com</author>
      <link>http://dev.mo.cn/article_85.html</link>
      <pubDate>2008-7-16 2:22:28</pubDate>
      <guid>http://dev.mo.cn/article_85.html</guid>
      <description>
      <![CDATA[把下面代码保存到一个文本文件,修改后缀为.vbs,然后运行,输入正确网址就可以"偷"别人的网页了~哈哈<br /><div class="code"><div class="code_title"><span> &nbsp;<img src="images/code.gif" alt="" style="padding:0px;border:0px;" /></span>&nbsp;&nbsp;&nbsp;<a href="javascript:void(0);" onclick="window.clipboardData.setData('Text',this.parentNode.parentNode.childNodes[1].outerText);alert('븴Ƴɹ,Ctrl+VճҪλ!!');">ȫ</a></div><div class="code_content"><br />time1=timer<br />dim&nbsp;reg,vUrl,VBody,code,time1,time2,title<br />vUrl=inputbox("请输入有效网址，必须以http://开头","请输入网址","http://blog.ii-home.cn")<br />path=left(Wscript.ScriptFullName,len(Wscript.ScriptFullName)-len(Wscript.ScriptName))&nbsp;<br />str=""<br />reg="\&lt;meta.+&nbsp;charset=&nbsp;{0,}([^\""&nbsp;\&gt;\/]*).+\/{0,1}\&gt;"<br />VBody=GetResStr(vUrl)<br />code=GetCode(VBody,reg)<br />title=GetCode(VBody,"\&lt;title\&gt;(.*)\&lt;\/title\&gt;")<br />time2=timer<br />tim=formatnumber((time2-time1)*1000,2)&"MS"<br />str=str&"页面标题:"&title&vbcrlf<br />str=str&"使用时间:"&tim&vbcrlf<br />fname=path&"\"&getname()&".html"<br />WritFile&nbsp;replaceStr(VBody),fname<br />'WritFile&nbsp;VBody,fname&nbsp;'若不清除img标签请使用这个<br />str=str&"文件已经成功保存到"&fname<br /><br />WScript.echo&nbsp;str<br /><br />Function&nbsp;WritFile(str,file)&nbsp;'写入文件函数<br />&nbsp;&nbsp;&nbsp;SavePath=file<br />&nbsp;&nbsp;&nbsp;Set&nbsp;objAso&nbsp;=&nbsp;CreateObject("ADODB.Stream")<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;objAso.Type=2<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;objAso.Mode&nbsp;=&nbsp;3<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;objAso.Open&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;objAso.Position&nbsp;=0<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;objAso.Writetext&nbsp;str<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;objAso.SaveToFile&nbsp;SavePath,2<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;objAso.Close<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;set&nbsp;objAso=nothing<br />End&nbsp;Function<br /><br />'函数名:GetResStr<br />'作用:获取指定URL的HTML代码<br />'参数:URL-要获取的URL<br />function&nbsp;GetResStr(URL)<br />err.clear<br />dim&nbsp;ResBody,ResStr,PageCode,ReturnStr<br />Set&nbsp;Http=createobject("MiCROSOFT.XMLHTTP")&nbsp;<br />Http.open&nbsp;"GET",URL,False&nbsp;<br />Http.Send()&nbsp;<br />If&nbsp;Http.Readystate&nbsp;=4&nbsp;Then&nbsp;<br />&nbsp;&nbsp;If&nbsp;Http.status=200&nbsp;Then<br />&nbsp;&nbsp;&nbsp;&nbsp;ResStr=http.responseText<br />&nbsp;&nbsp;&nbsp;&nbsp;ResBody=http.responseBody<br />&nbsp;&nbsp;&nbsp;&nbsp;PageCode=GetCode(ResStr,reg)<br />&nbsp;&nbsp;&nbsp;&nbsp;ReturnStr=BytesToBstr(http.responseBody,PageCode)<br />&nbsp;&nbsp;&nbsp;&nbsp;GetResStr=ReturnStr<br />&nbsp;&nbsp;End&nbsp;If&nbsp;<br />End&nbsp;If&nbsp;<br />End&nbsp;Function<br /><br />'函数名:BytesToBstr<br />'作用:转换二进制数据为字符<br />'参数:Body-二进制数据,Cset-文本编码方式<br />Function&nbsp;BytesToBstr(Body,Cset)&nbsp;<br />&nbsp;&nbsp;Dim&nbsp;Objstream&nbsp;<br />&nbsp;&nbsp;Set&nbsp;Objstream&nbsp;=&nbsp;CreateObject("adodb.stream")&nbsp;<br />&nbsp;&nbsp;objstream.Type&nbsp;=&nbsp;1&nbsp;<br />&nbsp;&nbsp;objstream.Mode&nbsp;=3&nbsp;<br />&nbsp;&nbsp;objstream.Open&nbsp;<br />&nbsp;&nbsp;objstream.Write&nbsp;body&nbsp;<br />&nbsp;&nbsp;objstream.Position&nbsp;=&nbsp;0&nbsp;<br />&nbsp;&nbsp;objstream.Type&nbsp;=&nbsp;2&nbsp;<br />&nbsp;&nbsp;objstream.Charset&nbsp;=Cset&nbsp;<br />&nbsp;&nbsp;BytesToBstr&nbsp;=&nbsp;objstream.ReadText&nbsp;<br />&nbsp;&nbsp;objstream.Close&nbsp;<br />&nbsp;&nbsp;set&nbsp;objstream&nbsp;=&nbsp;nothing&nbsp;<br />End&nbsp;Function<br />&nbsp;<br />'函数名:GetCode<br />'作用:转换二进制为字符<br />'参数:str-待查询字符串,regstr-正则表达式<br />Function&nbsp;GetCode(str,regstr)<br />Dim&nbsp;Reg,serStr<br />set&nbsp;Reg=&nbsp;new&nbsp;RegExp<br />Reg.IgnoreCase&nbsp;=&nbsp;True<br />Reg.MultiLine&nbsp;=&nbsp;True<br />Reg.Pattern&nbsp;=regstr<br />if&nbsp;Reg.test(str)&nbsp;then&nbsp;'若查询到匹配项<br />&nbsp;&nbsp;&nbsp;Set&nbsp;Cols&nbsp;=&nbsp;Reg.Execute(str)<br />&nbsp;&nbsp;&nbsp;serStr=Cols(0).SubMatches(0)&nbsp;'使用匹配到的第一个匹配项<br />else&nbsp;'否则给个默认值gb2312,有点省懒法，如果页面没给出编码格式，想知道确实有点麻烦<br />&nbsp;&nbsp;&nbsp;serStr="gb2312"<br />end&nbsp;if<br />GetCode=serStr<br />end&nbsp;function<br /><br />'函数名:getname<br />'作用:获得随机文件名<br />'参数:无<br />function&nbsp;getname()<br />&nbsp;&nbsp;&nbsp;&nbsp;dim&nbsp;y,m,d,h,mm,s,r<br />&nbsp;&nbsp;&nbsp;&nbsp;Randomize()<br />&nbsp;&nbsp;&nbsp;&nbsp;y=year(now)<br />&nbsp;&nbsp;&nbsp;&nbsp;m=month(now):if&nbsp;m&lt;10&nbsp;then&nbsp;m="0"&m<br />&nbsp;&nbsp;&nbsp;&nbsp;d=day(now):if&nbsp;d&lt;10&nbsp;then&nbsp;d="0"&d<br />&nbsp;&nbsp;&nbsp;&nbsp;h=hour(now):if&nbsp;h&lt;10&nbsp;then&nbsp;h="0"&h<br />&nbsp;&nbsp;&nbsp;&nbsp;mm=minute(now):if&nbsp;mm&lt;10&nbsp;then&nbsp;mm="0"&mm<br />&nbsp;&nbsp;&nbsp;&nbsp;s=second(now):if&nbsp;s&lt;10&nbsp;then&nbsp;s="0"&s<br />&nbsp;&nbsp;&nbsp;&nbsp;r=cint(rnd()*10):if&nbsp;r&lt;10&nbsp;then&nbsp;r="0"&r<br />&nbsp;&nbsp;&nbsp;&nbsp;getname=y&m&d&h&mm&s&r<br />end&nbsp;function<br /><br />'函数名:replaceStr<br />'作用:替换指定字符<br />'参数:strcontent-待替换字符串<br />Function&nbsp;replaceStr(strcontent)&nbsp;<br />&nbsp; &nbsp; &nbsp; &nbsp; dim&nbsp;re<br />&nbsp; &nbsp; &nbsp; &nbsp; Set&nbsp;re=new&nbsp;RegExp<br />&nbsp; &nbsp; &nbsp; &nbsp; re.IgnoreCase&nbsp;=true<br />&nbsp; &nbsp; &nbsp; &nbsp; re.Global=True<br />&nbsp; &nbsp; &nbsp; &nbsp; re.pattern="\&lt;img[^\&lt;\&gt;\/].*(\/|)\&gt;"&nbsp;'祛除所有img标签<br />&nbsp; &nbsp; &nbsp; &nbsp; strcontent=re.replace(strcontent,"")<br />&nbsp; &nbsp; &nbsp; &nbsp; set&nbsp;re=Nothing<br />&nbsp; &nbsp; &nbsp; &nbsp; replaceStr=strcontent&nbsp;<br />End&nbsp;Function<br /></div></div><br /><br />]]>
      </description>
      <category>AJAX</category>
   </item>
   <item>
      <title>AJAX的POST方法传递数据</title>
      <author>zhanghuiguoanlige@126.com</author>
      <link>http://dev.mo.cn/article_84.html</link>
      <pubDate>2008-7-15 21:48:41</pubDate>
      <guid>http://dev.mo.cn/article_84.html</guid>
      <description>
      <![CDATA[&nbsp;&nbsp;&nbsp;AJAX的POST方法传递数据的示例代码，a.asp另存为utf-8格式；<br />a.asp的代码为：<br /><div class="code"><div class="code_title"><span> &nbsp;<img src="images/code.gif" alt="" style="padding:0px;border:0px;" /></span>&nbsp;&nbsp;&nbsp;<a href="javascript:void(0);" onclick="window.clipboardData.setData('Text',this.parentNode.parentNode.childNodes[1].outerText);alert('븴Ƴɹ,Ctrl+VճҪλ!!');">ȫ</a></div><div class="code_content"><br />&lt;%<br />for&nbsp;i=0&nbsp;to&nbsp;1000000<br />next<br />response.write&nbsp;request.form("say")&"&lt;br&nbsp;/&gt;"&request.form("content")<br />%&gt;<br /></div></div><br />test.asp的代码为：<br /><div class="code"><div class="code_title"><span> &nbsp;<img src="images/code.gif" alt="" style="padding:0px;border:0px;" /></span>&nbsp;&nbsp;&nbsp;<a href="javascript:void(0);" onclick="window.clipboardData.setData('Text',this.parentNode.parentNode.childNodes[1].outerText);alert('븴Ƴɹ,Ctrl+VճҪλ!!');">ȫ</a></div><div class="code_content"><br />&lt;html&gt;<br />&lt;head&gt;<br />&lt;meta&nbsp;http-equiv="Content-Language"&nbsp;content="zh-cn"&gt;<br />&lt;meta&nbsp;http-equiv="Content-Type"&nbsp;content="text/html;&nbsp;charset=gb2312"&gt;<br /><br />&lt;script&nbsp;type="text/javascript"&gt;<br />var&nbsp;oBao;<br />var&nbsp;obj;<br />//发送请求<br />function&nbsp;sxs()&nbsp;{<br />obj=document.getElementById("return");<br />&nbsp;if&nbsp;(window.ActiveXObject)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;oBao=new&nbsp;ActiveXObject("Microsoft.XMLHTTP");<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;if&nbsp;(window.XMLHttpRequest)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;oBao=new&nbsp;XMLHttpRequest();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />var&nbsp;my_url='a.asp';<br />obj.innerHTML='请等待...';&nbsp;&nbsp;<br />oBao.onreadystatechange=changecontent;<br />oBao.open("post",my_url,true);<br />oBao.setRequestHeader("Content-Type","application/x-www-form-urlencoded");&nbsp;<br />oBao.send('say='+escape('我爱你')+'&content=anlige');&nbsp;<br />}<br />//发送请求<br />function&nbsp;changecontent(){<br />if(oBao.readyState==4){<br />&nbsp;&nbsp;&nbsp;if(oBao.status==200){&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;obj.innerHTML='返回信息:&lt;br&nbsp;/&gt;'+oBao.responseText;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}else{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;obj.innerHTML='返回信息:&lt;br&nbsp;/&gt;出现错误,错误代码为:'+oBao.status;<br />&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;<br />&nbsp;&nbsp;}<br />}<br />&lt;/script&gt;<br />&lt;/head&gt;<br />&lt;body&gt;<br />&lt;input&nbsp;onmouseover="this.focus();"&nbsp;type="button"&nbsp;value="测试"&nbsp;onclick="return&nbsp;sxs();"&nbsp;/&gt;&lt;br&nbsp;/&gt;&lt;br&nbsp;/&gt;<br />&lt;span&nbsp;id="return"&gt;&lt;/span&gt;<br />&lt;/body&gt;<br />&lt;/html&gt;<br /></div></div><br />]]>
      </description>
      <category>AJAX</category>
   </item>
   <item>
      <title>XMLHttpRequest对象详细说明</title>
      <author>zhanghuiguoanlige@126.com</author>
      <link>http://dev.mo.cn/article_60.html</link>
      <pubDate>2008-6-25 3:36:38</pubDate>
      <guid>http://dev.mo.cn/article_60.html</guid>
      <description>
      <![CDATA[以支持多种浏览器的方式创建&nbsp;XMLHttpRequest&nbsp;对象<br /><div class="code"><div class="code_title"><span> &nbsp;<img src="images/code.gif" alt="" style="padding:0px;border:0px;" /></span>&nbsp;&nbsp;&nbsp;<a href="javascript:void(0);" onclick="window.clipboardData.setData('Text',this.parentNode.parentNode.childNodes[1].outerText);alert('븴Ƴɹ,Ctrl+VճҪλ!!');">ȫ</a></div><div class="code_content"><br />var&nbsp;xmlHttp&nbsp;=&nbsp;false;<br />try&nbsp;{<br />&nbsp;&nbsp;xmlHttp&nbsp;=&nbsp;new&nbsp;ActiveXObject("Msxml2.XMLHTTP");<br />}<br />&nbsp;catch&nbsp;(e)&nbsp;{<br />&nbsp;&nbsp;try&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;xmlHttp&nbsp;=&nbsp;new&nbsp;ActiveXObject("Microsoft.XMLHTTP");<br />&nbsp;&nbsp;}<br />&nbsp;catch&nbsp;(e2)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;xmlHttp&nbsp;=&nbsp;false;<br />&nbsp;&nbsp;}<br />}<br />if&nbsp;(!xmlHttp&nbsp;&&&nbsp;typeof&nbsp;XMLHttpRequest&nbsp;!=&nbsp;'undefined')&nbsp;{<br />&nbsp;&nbsp;xmlHttp&nbsp;=&nbsp;new&nbsp;XMLHttpRequest();<br />}<br /></div></div><br />Ajax&nbsp;的基本请求/响应模型<br />所有&nbsp;Ajax&nbsp;应用程序中基本都雷同的流程：<br />1、从&nbsp;Web&nbsp;表单中获取需要的数据。&nbsp;<br />2、建立要连接的&nbsp;URL。&nbsp;<br />3、打开到服务器的连接。&nbsp;<br />4、设置服务器在完成后要运行的函数。&nbsp;<br />5、发送请求。&nbsp;<br />XMLHttpRequest&nbsp;对象实例的&nbsp;onreadystatechange&nbsp;属性可以告诉服务器在运行完成&nbsp;后做什么。因为代码没有等待服务器，必须让服务器知道怎么做以便您能作出响应。<br /><br />现在要面对服务器的响应了。现在只要知道两点：<br />&#8226;什么也不要做，直到&nbsp;xmlHttp.readyState&nbsp;属性的值等于&nbsp;4。&nbsp;<br />&#8226;服务器将把响应填充到&nbsp;xmlHttp.responseText&nbsp;属性中。&nbsp;<br />其中的第一点，即就绪状态，将在下一篇文章中详细讨论，您将进一步了解&nbsp;HTTP&nbsp;请求的阶段，可能比您设想的还多。现在只要检查一个特定的值（4）就可以了（下一期文章中还有更多的值要介绍）。第二点，使用&nbsp;xmlHttp.responseText&nbsp;属性获得服务器的响应，<br />一个&nbsp;JavaScript&nbsp;方法捕捉用户输入表单的信息并将其发送到服务器，另一个&nbsp;JavaScript&nbsp;方法监听和处理响应，并在响应返回时设置字段的值。所有这些实际上都依赖于调用&nbsp;第一个&nbsp;JavaScript&nbsp;方法，它启动了整个过程。<br /><br />必须非常熟悉一个&nbsp;JavaScript&nbsp;对象，即&nbsp;XMLHttpRequest<br />该对象的很少的几个&nbsp;方法和属性。<br />&#8226;open()：建立到服务器的新请求。&nbsp;<br />&#8226;send()：向服务器发送请求。&nbsp;<br />&#8226;abort()：退出当前请求。&nbsp;<br />&#8226;readyState：提供当前&nbsp;HTML&nbsp;的就绪状态。&nbsp;<br />&#8226;responseText：服务器返回的请求响应文本<br />这些方法和属性都与发送请求及处理响应有关<br /><br /><br />用&nbsp;XMLHttpRequest&nbsp;发送请求<br />得到请求对象之后就可以进入请求/响应循环了。记住，XMLHttpRequest&nbsp;惟一的目的是让您发送请求和接收响应。其他一切都是&nbsp;JavaScript、CSS&nbsp;或页面中其他代码的工作：改变用户界面、切换图像、解释服务器返回的数据。<br />设置服务器&nbsp;URL<br />首先要确定连接的服务器的&nbsp;URL。这并不是&nbsp;Ajax&nbsp;的特殊要求，但仍然是建立连接所必需的，显然现在您应该知道如何构造&nbsp;URL&nbsp;了。<br />打开请求<br />有了要连接的&nbsp;URL&nbsp;后就可以配置请求了。可以用&nbsp;XMLHttpRequest&nbsp;对象的&nbsp;open()&nbsp;方法来完成。该方法有五个参数：<br />request-type：发送请求的类型。典型的值是&nbsp;GET&nbsp;或&nbsp;POST，但也可以发送&nbsp;HEAD&nbsp;请求。&nbsp;<br />url：要连接的&nbsp;URL。&nbsp;<br />asynch：如果希望使用异步连接则为&nbsp;true，否则为&nbsp;false。该参数是可选的，默认为&nbsp;true。&nbsp;<br />username：如果需要身份验证，则可以在此指定用户名。该可选参数没有默认值。&nbsp;password：如果需要身份验证，则可以在此指定口令。该可选参数没有默认值。&nbsp;<br />Internet&nbsp;开发人员对&nbsp;open()&nbsp;方法到底做什么没有达成一致。但它实际上并不是&nbsp;打开一个请求。如果监控&nbsp;XHTML/Ajax&nbsp;页面及其连接脚本之间的网络和数据传递，当调用&nbsp;open()&nbsp;方法时将看不到任何通信。不清楚为何选用了这个名字，但显然不是一个好的选择。<br /><br />发送请求<br />一旦用&nbsp;open()&nbsp;配置好之后，就可以发送请求了。幸运的是，发送请求的方法的名称要比&nbsp;open()&nbsp;适当，它就是&nbsp;send()。<br />指定回调方法<br />服务器在完成通过&nbsp;XMLHttpRequest&nbsp;发送给它的请求处理之后需要某种指示说明怎么做。<br />在&nbsp;JavaScript&nbsp;中引用函数：<br />JavaScript&nbsp;是一种弱类型的语言，可以用变量引用任何东西。因此如果声明了一个函数&nbsp;updatePage()，JavaScript&nbsp;也将该函数名看作是一个变量。换句话说，可用变量名&nbsp;updatePage&nbsp;在代码中引用函数。<br />需要特别注意的是该属性在代码中设置的位置&nbsp;——&nbsp;它是在调用&nbsp;send()&nbsp;之前&nbsp;设置的。发送请求之前必须设置该属性，这样服务器在回答完成请求之后才能查看该属性。<br />服务器完成了请求处理。服务器查看&nbsp;onreadystatechange&nbsp;属性确定要调用的方法。<br />回调和&nbsp;Ajax<br />将&nbsp;XMLHttpRequest&nbsp;对象的&nbsp;onreadystatechange&nbsp;属性设置为要运行的函数名。这样，当服务器处理完请求后就会自动调用该函数。<br /><br />服务器在完成请求之后会在&nbsp;XMLHttpRequest&nbsp;的&nbsp;onreadystatechange&nbsp;属性中查找要调用的方法。但还不完整。事实上，每当&nbsp;HTTP&nbsp;就绪状态改变时它都会调用该方法。<br />HTTP&nbsp;就绪状态表示请求的状态或情形。它用于确定该请求是否已经开始、是否得到了响应或者请求/响应模型是否已经完成。它还可以帮助确定读取服务器提供的响应文本或数据是否安全。在&nbsp;Ajax&nbsp;应用程序中需要了解五种就绪状态：<br />&#8226;0：请求没有发出（在调用&nbsp;open()&nbsp;之前）。&nbsp;<br />&#8226;1：请求已经建立但还没有发出（调用&nbsp;send()&nbsp;之前）。&nbsp;<br />&#8226;2：请求已经发出正在处理之中（这里通常可以从响应得到内容头部）。&nbsp;<br />&#8226;3：请求已经处理，响应中通常有部分数据可用，但是服务器还没有完成响应。&nbsp;<br />&#8226;4：响应已完成，可以访问服务器响应并使用它。&nbsp;<br />与大多数跨浏览器问题一样，这些就绪状态的使用也不尽一致。您也许期望任务就绪状态从&nbsp;0&nbsp;到&nbsp;1、2、3&nbsp;再到&nbsp;4，但实际上很少是这种情况。一些浏览器从不报告&nbsp;0&nbsp;或&nbsp;1&nbsp;而直接从&nbsp;2&nbsp;开始，然后是&nbsp;3&nbsp;和&nbsp;4。其他浏览器则报告所有的状态。还有一些则多次报告就绪状态&nbsp;1。在上一节中看到，服务器多次调用&nbsp;updatePage()，每次调用都会弹出警告框&nbsp;——&nbsp;可能和预期的不同！<br />对于&nbsp;Ajax&nbsp;编程，需要直接处理的惟一状态就是就绪状态&nbsp;4，它表示服务器响应已经完成，可以安全地使用响应数据了。基于此，回调方法中的第一行应该如&nbsp;清单&nbsp;13&nbsp;所示。<br />除了就绪状态外，还需要检查&nbsp;HTTP&nbsp;状态。我们期望的状态码是&nbsp;200，它表示一切顺利。如果就绪状态是&nbsp;4&nbsp;而且状态码是&nbsp;200，就可以处理服务器的数据了，而且这些数据应该就是要求的数据（而不是错误或者其他有问题的信息）。因此还要在回调方法中增加状态检查，<br /><div class="code"><div class="code_title"><span> &nbsp;<img src="images/code.gif" alt="" style="padding:0px;border:0px;" /></span>&nbsp;&nbsp;&nbsp;<a href="javascript:void(0);" onclick="window.clipboardData.setData('Text',this.parentNode.parentNode.childNodes[1].outerText);alert('븴Ƴɹ,Ctrl+VճҪλ!!');">ȫ</a></div><div class="code_content"><br />function&nbsp;updatePage()&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(request.readyState&nbsp;==&nbsp;4)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(request.status&nbsp;==&nbsp;200)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert("Server&nbsp;is&nbsp;done!");<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;if&nbsp;(request.status&nbsp;==&nbsp;404)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert("Request&nbsp;URL&nbsp;does&nbsp;not&nbsp;exist");<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert("Error:&nbsp;status&nbsp;code&nbsp;is&nbsp;"&nbsp;+&nbsp;request.status);<br />&nbsp;&nbsp;&nbsp;}<br /></div></div><br /><br />读取响应文本<br />返回的数据保存在&nbsp;XMLHttpRequest&nbsp;对象的&nbsp;responseText&nbsp;属性中。关于&nbsp;responseText&nbsp;中的文本内容，比如格式和长度，有意保持含糊。这样服务器就可以将文本设置成任何内容。比方说，一种脚本可能返回逗号分隔的值，另一种则使用管道符（即&nbsp;|&nbsp;字符）分隔的值，还有一种则返回长文本字符串。何去何从由服务器决定。<br />HTTP&nbsp;就绪状态<br />0：请求未初始化（还没有调用&nbsp;open()）。<br />&#8226;1：请求已经建立，但是还没有发送（还没有调用&nbsp;send()）。<br />&#8226;2：请求已发送，正在处理中（通常现在可以从响应中获取内容头）。<br />&#8226;3：请求在处理中；通常响应中已有部分数据可用了，但是服务器还没有完成响应的生成。<br />&#8226;4：响应已完成；您可以获取并使用服务器的响应了。<br />在多个&nbsp;JavaScript&nbsp;函数都使用相同的请求对象时，您需要检查就绪状态&nbsp;0&nbsp;来确保这个请求对象没有正在使用，这种机制会产生问题。由于&nbsp;readyState&nbsp;==&nbsp;4&nbsp;表示一个已完成的请求，因此您经常会发现那些目前没在使用的处于就绪状态的请求对象仍然被设置成了&nbsp;4&nbsp;——&nbsp;这是因为从服务器返回来的数据已经使用过了，但是从它们被设置为就绪状态之后就没有进行任何变化。有一个函数&nbsp;abort()&nbsp;会重新设置请求对象，但是这个函数却不是真正为了这个目的而使用的。如果您&nbsp;必须&nbsp;使用多个函数，最好是为每个函数都创建并使用一个函数，而不是在多个函数之间共享相同的对象。<br />查看就绪状态<br />&nbsp;&nbsp;&nbsp;function&nbsp;updatePage()&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;Output&nbsp;the&nbsp;current&nbsp;ready&nbsp;state<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert("updatePage()&nbsp;called&nbsp;with&nbsp;ready&nbsp;state&nbsp;of&nbsp;"&nbsp;+&nbsp;request.readyState);<br />&nbsp;&nbsp;&nbsp;}<br />查看请求的响应文本<br />与就绪状态类似，responseText&nbsp;属性的值在整个请求的生命周期中也会发生变化。要查看这种变化，请使用如&nbsp;清单&nbsp;5&nbsp;所示的代码来测试请求的响应文本，以及它们的就绪状态。<br />清单&nbsp;5.&nbsp;测试&nbsp;responseText&nbsp;属性<br />&nbsp;&nbsp;&nbsp;function&nbsp;updatePage()&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;Output&nbsp;the&nbsp;current&nbsp;ready&nbsp;state<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert("updatePage()&nbsp;called&nbsp;with&nbsp;ready&nbsp;state&nbsp;of&nbsp;"&nbsp;+&nbsp;request.readyState&nbsp;+<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"&nbsp;and&nbsp;a&nbsp;response&nbsp;text&nbsp;of&nbsp;'"&nbsp;+&nbsp;request.responseText&nbsp;+&nbsp;"'");<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />深入了解&nbsp;HTTP&nbsp;状态代码<br />有了就绪状态和您在&nbsp;Ajax&nbsp;编程技术中学习到的服务器的响应，您就可以为&nbsp;Ajax&nbsp;应用程序添加另外一级复杂性了&nbsp;——&nbsp;这要使用&nbsp;HTTP&nbsp;状态代码。这些代码对于&nbsp;Ajax&nbsp;来说并没有什么新鲜。从&nbsp;Web&nbsp;出现以来，它们就已经存在了。在&nbsp;Web&nbsp;浏览器中您可能已经看到过几个状态代码：<br />&#8226;401：未经授权<br />&#8226;403：禁止<br />&#8226;404：没找到<br />它花费了最小的努力来确保服务器不但完成了一个请求，而且还返回了一个&nbsp;“一切良好”&nbsp;的状态代码。这个代码是&nbsp;"200"，它是通过&nbsp;XMLHttpRequest&nbsp;对象的&nbsp;status&nbsp;属性来报告的。为了确保服务器不但完成了一个请求，而且还报告了一个&nbsp;OK&nbsp;状态，请在您的回调函数中添加另外一个检查功能，如&nbsp;清单&nbsp;7&nbsp;所示。<br />清单&nbsp;7.&nbsp;检查有效状态代码<br /><div class="code"><div class="code_title"><span> &nbsp;<img src="images/code.gif" alt="" style="padding:0px;border:0px;" /></span>&nbsp;&nbsp;&nbsp;<a href="javascript:void(0);" onclick="window.clipboardData.setData('Text',this.parentNode.parentNode.childNodes[1].outerText);alert('븴Ƴɹ,Ctrl+VճҪλ!!');">ȫ</a></div><div class="code_content"><br />&nbsp;&nbsp;&nbsp;function&nbsp;updatePage()&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(request.readyState&nbsp;==&nbsp;4)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(request.status&nbsp;==&nbsp;200)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;response&nbsp;=&nbsp;request.responseText.split("|");<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;document.getElementById("order").value&nbsp;=&nbsp;response[0];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;document.getElementById("address").innerHTML&nbsp;=<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;response[1].replace(/\n/g,&nbsp;"&lt;br&nbsp;/&gt;");<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;else<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert("status&nbsp;is&nbsp;"&nbsp;+&nbsp;request.status);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;}<br /></div></div><br />用户无法判断问题究竟是认证问题、没找到脚本（此处就是这种情况）、用户错误还是代码中有些地方产生了问题。添加一些简单的代码可以让这个错误更加具体。请参照&nbsp;清单&nbsp;8，它负责处理没找到的脚本或认证发生错误的情况，在出现这些错误时都会给出具体的消息。<br />清单&nbsp;8.&nbsp;检查有效状态代码<br /><div class="code"><div class="code_title"><span> &nbsp;<img src="images/code.gif" alt="" style="padding:0px;border:0px;" /></span>&nbsp;&nbsp;&nbsp;<a href="javascript:void(0);" onclick="window.clipboardData.setData('Text',this.parentNode.parentNode.childNodes[1].outerText);alert('븴Ƴɹ,Ctrl+VճҪλ!!');">ȫ</a></div><div class="code_content"><br />&nbsp;&nbsp;&nbsp;function&nbsp;updatePage()&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(request.readyState&nbsp;==&nbsp;4)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(request.status&nbsp;==&nbsp;200)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;response&nbsp;=&nbsp;request.responseText.split("|");<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;document.getElementById("order").value&nbsp;=&nbsp;response[0];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;document.getElementById("address").innerHTML&nbsp;=<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;response[1].replace(/\n/g,&nbsp;"&lt;br&nbsp;/&gt;");<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;else&nbsp;if&nbsp;(request.status&nbsp;==&nbsp;404)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert&nbsp;("Requested&nbsp;URL&nbsp;is&nbsp;not&nbsp;found.");<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;else&nbsp;if&nbsp;(request.status&nbsp;==&nbsp;403)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert("Access&nbsp;denied.");<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;else<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert("status&nbsp;is&nbsp;"&nbsp;+&nbsp;request.status);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;}<br /></div></div><br />其他请求类型<br />检查&nbsp;URL<br />您已经看到了当&nbsp;URL&nbsp;不存在时应该如何检查&nbsp;404&nbsp;错误。如果这变成一个常见的问题&nbsp;——&nbsp;可能是缺少了一个特定的脚本或&nbsp;servlet&nbsp;——&nbsp;那么您就可能会希望在生成完整的&nbsp;GET&nbsp;或&nbsp;POST&nbsp;请求之前来检查这个&nbsp;URL。要实现这种功能，生成一个&nbsp;HEAD&nbsp;请求，然后在回调函数中检查&nbsp;404&nbsp;错误；清单&nbsp;11&nbsp;给出了一个简单的回调函数。<br />清单&nbsp;11.&nbsp;检查某个&nbsp;URL&nbsp;是否存在<br /><div class="code"><div class="code_title"><span> &nbsp;<img src="images/code.gif" alt="" style="padding:0px;border:0px;" /></span>&nbsp;&nbsp;&nbsp;<a href="javascript:void(0);" onclick="window.clipboardData.setData('Text',this.parentNode.parentNode.childNodes[1].outerText);alert('븴Ƴɹ,Ctrl+VճҪλ!!');">ȫ</a></div><div class="code_content"><br />&nbsp;&nbsp;&nbsp;function&nbsp;updatePage()&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(request.readyState&nbsp;==&nbsp;4)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(request.status&nbsp;==&nbsp;200)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert("URL&nbsp;exists");<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;else&nbsp;if&nbsp;(request.status&nbsp;==&nbsp;404)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert("URL&nbsp;does&nbsp;not&nbsp;exist.");<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;else&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert("Status&nbsp;is:&nbsp;"&nbsp;+&nbsp;request.status);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;}<br /></div></div><br /><br /><br />]]>
      </description>
      <category>AJAX</category>
   </item>
   <item>
      <title>一段重用很高的ajax代码</title>
      <author>zhanghuiguoanlige@126.com</author>
      <link>http://dev.mo.cn/article_59.html</link>
      <pubDate>2008-6-25 3:33:23</pubDate>
      <guid>http://dev.mo.cn/article_59.html</guid>
      <description>
      <![CDATA[一段重用很高的ajax代码，可以套用<br /><div class="code"><div class="code_title"><span> &nbsp;<img src="images/code.gif" alt="" style="padding:0px;border:0px;" /></span>&nbsp;&nbsp;&nbsp;<a href="javascript:void(0);" onclick="window.clipboardData.setData('Text',this.parentNode.parentNode.childNodes[1].outerText);alert('븴Ƴɹ,Ctrl+VճҪλ!!');">ȫ</a></div><div class="code_content"><br />&lt;!DOCTYPE&nbsp;HTML&nbsp;PUBLIC&nbsp;"-//W3C//DTD&nbsp;HTML&nbsp;4.01&nbsp;Transitional//EN"&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&nbsp;language="JavaScript"&nbsp;type="text/javascript"&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;xmlreq&nbsp;=&nbsp;false;<br />&nbsp;&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&nbsp;createXMLHttpRequest(){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(window.XMLHttpRequest)&nbsp;{<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&nbsp;=&nbsp;new&nbsp;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;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(window.ActiveXObject)&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;//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&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;xmlreq&nbsp;=&nbsp;new&nbsp;ActiveXObject("Msxml12.XMLHTTP");<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;<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&nbsp;(e1)&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;try&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;&nbsp;&nbsp;&nbsp;&nbsp;req&nbsp;=&nbsp;new&nbsp;ActiveXObject("Microsoft.XMLHTTP");<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;<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&nbsp;(e2)&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;//&nbsp;Unable&nbsp;to&nbsp;create&nbsp;an&nbsp;XMLHttpRequest&nbsp;with&nbsp;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 />&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; //GET提交请求<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; function&nbsp;sendRequestGet(url){<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; createXMLHttpRequest();<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; xmlreq.open("get",url,true);<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; xmlreq.onreadystatechange&nbsp;=&nbsp;processResponse;//响应请求函数<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; xmlreq.send(null);<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; //POST提交请求<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; function&nbsp;sendRequestPost(url,param){<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; createXMLHttpRequest();<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; xmlreq.open("post",url,true);<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; xmlreq.onreadystatechange&nbsp;=&nbsp;processResponse;//响应请求的函数<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; xmlreq.setRequestHeader("Content-Type",&nbsp;"application/x-www-form-urlencoded");<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; xmlreq.send(param);<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; function&nbsp;sendRequest(url,param,method){<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if(method){<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if&nbsp;(method.toLowerCase("get"))&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;sendRequestGet(url&nbsp;+&nbsp;"?"&nbsp;+&nbsp;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;<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&nbsp;(method.toLowerCase("post"))&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;sendRequestPost(url,&nbsp;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 />&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; alert("method&nbsp;is&nbsp;null");<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; //---------响应请求的函数------------<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; function&nbsp;processResponse(){<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if(xmlreq.readyState&nbsp;==&nbsp;4){<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if(xmlreq.status&nbsp;==&nbsp;200){<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; alert(xmlreq.responseText);<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; alert("发送失败！")<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; //事件响应<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; function&nbsp;submitRequest(){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;form1&nbsp;=&nbsp;document.getElementById("form1");<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;url&nbsp;=&nbsp;form1.action;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;username&nbsp;=&nbsp;form1.username.value;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;password&nbsp;=&nbsp;form1.password.value;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;method&nbsp;=&nbsp;form1.method;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;param&nbsp;=&nbsp;"username="&nbsp;+&nbsp;username&nbsp;+&nbsp;"&password="&nbsp;+&nbsp;password;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sendRequest(url,&nbsp;param,&nbsp;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&nbsp;action="server.jsp"&nbsp;method="post"&nbsp;name="form1"&nbsp;id="form1"&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;用户名:&lt;input&nbsp;name="username"&nbsp;id="username"&nbsp;type="text"&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;&nbsp;码:&lt;input&nbsp;name="password"&nbsp;id="password"&nbsp;type="text"&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&nbsp;type="button"&nbsp;value="发送信息"&nbsp;onclick="submitRequest()"&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;<br /></div></div><br /><br />]]>
      </description>
      <category>AJAX</category>
   </item>
   <item>
      <title>XMLHTTP获取访问者地理位置</title>
      <author>zhanghuiguoanlige@126.com</author>
      <link>http://dev.mo.cn/article_58.html</link>
      <pubDate>2008-6-25 0:27:21</pubDate>
      <guid>http://dev.mo.cn/article_58.html</guid>
      <description>
      <![CDATA[利用XMLHTTP组件，调用纯真的IP查询(也可以调用其他的,代码就要修改了)<br /><div class="code"><div class="code_title"><span> &nbsp;<img src="images/code.gif" alt="" style="padding:0px;border:0px;" /></span>&nbsp;&nbsp;&nbsp;<a href="javascript:void(0);" onclick="window.clipboardData.setData('Text',this.parentNode.parentNode.childNodes[1].outerText);alert('븴Ƴɹ,Ctrl+VճҪλ!!');">ȫ</a></div><div class="code_content"><br />&lt;%<br />function&nbsp;GetResStr(URL,code)<br />err.clear<br />dim&nbsp;ResBody,ResStr,PageCode,ReturnStr<br />Set&nbsp;Http=server.createobject("Microsoft.XMLHTTP")&nbsp;<br />Http.open&nbsp;"GET",URL,False&nbsp;<br />Http.Send()&nbsp;<br />If&nbsp;Http.Readystate&nbsp;=4&nbsp;Then&nbsp;<br />&nbsp;&nbsp;If&nbsp;Http.status=200&nbsp;Then<br />&nbsp;&nbsp;&nbsp;&nbsp;ResBody=http.responseBody<br />&nbsp;&nbsp;&nbsp;&nbsp;ReturnStr=BytesToBstr(http.responseBody,code)<br />&nbsp;&nbsp;&nbsp;&nbsp;GetResStr=ReturnStr<br />&nbsp;&nbsp;End&nbsp;If&nbsp;<br />End&nbsp;If&nbsp;<br />End&nbsp;Function<br /><br />'函数名:BytesToBstr<br />'作用:转换二进制数据为字符<br />'参数:Body-二进制数据,Cset-文本编码方式<br />Function&nbsp;BytesToBstr(Body,Cset)&nbsp;<br />&nbsp;&nbsp;Dim&nbsp;Objstream&nbsp;<br />&nbsp;&nbsp;Set&nbsp;Objstream&nbsp;=&nbsp;Server.CreateObject("adodb.stream")&nbsp;<br />&nbsp;&nbsp;objstream.Type&nbsp;=&nbsp;1&nbsp;<br />&nbsp;&nbsp;objstream.Mode&nbsp;=3&nbsp;<br />&nbsp;&nbsp;objstream.Open&nbsp;<br />&nbsp;&nbsp;objstream.Write&nbsp;body&nbsp;<br />&nbsp;&nbsp;objstream.Position&nbsp;=&nbsp;0&nbsp;<br />&nbsp;&nbsp;objstream.Type&nbsp;=&nbsp;2&nbsp;<br />&nbsp;&nbsp;objstream.Charset&nbsp;=Cset&nbsp;<br />&nbsp;&nbsp;BytesToBstr&nbsp;=&nbsp;objstream.ReadText&nbsp;<br />&nbsp;&nbsp;objstream.Close&nbsp;<br />&nbsp;&nbsp;set&nbsp;objstream&nbsp;=&nbsp;nothing&nbsp;<br />End&nbsp;Function<br /><br />dim&nbsp;reg,vUrl,VBody,code,time1,time2,title<br />vUrl="http://www.cz88.net/ip/ipcheck.aspx?ip="&request.servervariables("REMOTE_ADDR")<br />TempStr=GetResStr(vUrl,"gb2312")<br />p1=instr(TempStr,"""")+1<br />p2=InStrRev(TempStr,"""")<br />Add=mid(TempStr,p1,p2-p1)<br /><br />response.write&nbsp;"您的IP为:"&request.servervariables("REMOTE_ADDR")&"&lt;br&nbsp;/&gt;"<br />response.write&nbsp;"您的位置:"&Add&"&lt;br&nbsp;/&gt;"<br />%&gt;&nbsp;<br /></div></div><br /><br />]]>
      </description>
      <category>AJAX</category>
   </item>
   <item>
      <title>自己写的ajax无刷新投票，IE下正常调用~~</title>
      <author>zhanghuiguoanlige@126.com</author>
      <link>http://dev.mo.cn/article_31.html</link>
      <pubDate>2008-5-23 11:57:09</pubDate>
      <guid>http://dev.mo.cn/article_31.html</guid>
      <description>
      <![CDATA[自己写的ajax无刷新投票，IE下正常调用~~<br /><br /><br /><br /><br /><br />投票页面<br /><br /><div class="code"><div class="code_title"><span> &nbsp;<img src="images/code.gif" alt="" style="padding:0px;border:0px;" /></span>&nbsp;&nbsp;&nbsp;<a href="javascript:void(0);" onclick="window.clipboardData.setData('Text',this.parentNode.parentNode.childNodes[1].outerText);alert('븴Ƴɹ,Ctrl+VճҪλ!!');">ȫ</a></div><div class="code_content"><br /><br />&lt;div&nbsp;class=sround&nbsp;style="height:175px;width:190px;"&gt;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;img&nbsp;src="img/nav.gif"&nbsp;style="margin-top:1px;"&gt;&nbsp;&lt;b&gt;调查投票&lt;/b&gt;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;div&nbsp;style="margin-left:10px;"&gt;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;form&nbsp;name=vot_frm&nbsp;action="vote.asp"&nbsp;method="get"&nbsp;target="_blank"&nbsp;style="text-justify:;height:100px"&gt;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;您对本站的印象如何?&lt;br&gt;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;input&nbsp;name=vote&nbsp;type=radio&nbsp;value=1&nbsp;style="border:0px"&gt;很好(共&lt;font&nbsp;color=red&gt;&lt;span&nbsp;id=s1&gt;&lt;/span&gt;&lt;/font&gt;票)&lt;br&gt;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;input&nbsp;name=vote&nbsp;type=radio&nbsp;value=2&nbsp;style="border:0px"&gt;还可以(共&lt;font&nbsp;color=red&gt;&lt;span&nbsp;id=s2&gt;&lt;/span&gt;&lt;/font&gt;票)&lt;br&gt;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;input&nbsp;name=vote&nbsp;type=radio&nbsp;value=3&nbsp;checked=true&nbsp;style="border:0px"&gt;一般(共&lt;font&nbsp;color=red&gt;&lt;span&nbsp;id=s3&gt;&lt;/span&gt;&lt;/font&gt;票)&lt;br&gt;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;input&nbsp;name=vote&nbsp;type=radio&nbsp;value=4&nbsp;style="border:0px"&gt;不好(共&lt;font&nbsp;color=red&gt;&lt;span&nbsp;id=s4&gt;&lt;/span&gt;&lt;/font&gt;票)&lt;br&gt;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;input&nbsp;name=vote&nbsp;type=radio&nbsp;value=5&nbsp;style="border:0px"&gt;很差(共&lt;font&nbsp;color=red&gt;&lt;span&nbsp;id=s5&gt;&lt;/span&gt;&lt;/font&gt;票)&lt;br&gt;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;input&nbsp;type=button&nbsp;onclick="Star(this.form,1);"&nbsp;value="投票"&gt;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/form&gt;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/div&gt;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/div&gt;<br /><br />&lt;script&nbsp;type="text/javascript"&gt;<br /><br />//无刷新投票<br /><br />Star(document.vot_frm,0);<br /><br />var&nbsp;oBao;<br /><br />//创建组件<br /><br />function&nbsp;createobj()&nbsp;{<br /><br />&nbsp;if&nbsp;(window.ActiveXObject)&nbsp;{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;oBao=new&nbsp;ActiveXObject("Microsoft.XMLHTTP");<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;if&nbsp;(window.XMLHttpRequest)&nbsp;{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;oBao=new&nbsp;XMLHttpRequest();<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />}<br /><br />//调用并返回结果<br /><br />function&nbsp;Star(frm,ty)&nbsp;{<br /><br />createobj();<br /><br />var&nbsp;id=0;<br /><br />if(ty==1)&nbsp;{<br /><br />for(var&nbsp;i=0;i&lt;frm.length;i++){<br /><br />if(frm.elements[&nbsp;i].checked)&nbsp;{<br /><br />id=frm.elements[&nbsp;i].value;<br /><br />}<br /><br />}<br /><br />}<br /><br />var&nbsp;my_url="vote.asp?vote="+id;<br /><br />oBao.open("POST",my_url,false);&nbsp;<br /><br />oBao.send(null);&nbsp;<br /><br />var&nbsp;strResult&nbsp;=&nbsp;unescape(oBao.responseText);<br /><br />for(var&nbsp;j=1;j&lt;6;j++){<br /><br />document.getElementById("s"+j).innerText&nbsp;=strResult.split("&nbsp;")[j-1];<br /><br />}<br /><br />}<br /><br />//定时刷新<br /><br />window.setInterval("Star(document.vot_frm,0);",5000);<br /><br />&lt;/script&gt;<br /><br /></div></div><br /><br />&nbsp;<br /><br /><br /><br />vote.asp的内容<br /><br /><div class="code"><div class="code_title"><span> &nbsp;<img src="images/code.gif" alt="" style="padding:0px;border:0px;" /></span>&nbsp;&nbsp;&nbsp;<a href="javascript:void(0);" onclick="window.clipboardData.setData('Text',this.parentNode.parentNode.childNodes[1].outerText);alert('븴Ƴɹ,Ctrl+VճҪλ!!');">ȫ</a></div><div class="code_content"><br /><br />&lt;!--#include&nbsp;file="mdb.asp"--&gt;&nbsp;'连接你自己的数据库，最好根据自己的数据库重新写下面的代码~~<br /><br />&lt;%<br /><br />dim&nbsp;n<br /><br />n=""<br /><br />if&nbsp;request.querystring("vote")&lt;&gt;""&nbsp;or&nbsp;request.querystring("vote")&gt;0&nbsp;then<br /><br />sql="update&nbsp;vote&nbsp;set&nbsp;count=count+1&nbsp;where&nbsp;vote='vote"&request.querystring("vote")&"'"<br /><br />conn.execute&nbsp;sql<br /><br />end&nbsp;if<br /><br />set&nbsp;rs=server.createobject("adodb.recordset")<br /><br />sql="select&nbsp;*&nbsp;from&nbsp;vote"<br /><br />rs.open&nbsp;sql,conn,1,1<br /><br />do&nbsp;while&nbsp;not&nbsp;rs.eof<br /><br />n=n&"&nbsp;"&rs(1)<br /><br />rs.movenext<br /><br />loop<br /><br />response.write&nbsp;trim(n)<br /><br />%&gt;&nbsp;<br /><br /></div></div><br /><br /><br /><br /><br /><br /><br /><br />]]>
      </description>
      <category>AJAX</category>
   </item>
   <item>
      <title>利用AJAX进行whois查询</title>
      <author>zhanghuiguoanlige@126.com</author>
      <link>http://dev.mo.cn/article_29.html</link>
      <pubDate>2008-5-7 3:28:17</pubDate>
      <guid>http://dev.mo.cn/article_29.html</guid>
      <description>
      <![CDATA[ajax说新颖也不新颖的一项技术，如果你用过google&nbsp;map服务就会体会到他的优点，当然不能乱用，呵呵！&nbsp;&nbsp;&nbsp;&nbsp;<br />下面是自己写的一个小例子，仅供参考，见笑！&nbsp;&nbsp;&nbsp;&nbsp;<br />详细内容可去网上搜索~&nbsp;&nbsp;&nbsp;&nbsp;<br />具体代码如下:&nbsp;&nbsp;<br /><br />main.html内容&nbsp;&nbsp;<br /><div class="code"><div class="code_title"><span> &nbsp;<img src="images/code.gif" alt="" style="padding:0px;border:0px;" /></span>&nbsp;&nbsp;&nbsp;<a href="javascript:void(0);" onclick="window.clipboardData.setData('Text',this.parentNode.parentNode.childNodes[1].outerText);alert('븴Ƴɹ,Ctrl+VճҪλ!!');">ȫ</a></div><div class="code_content"><br />&lt;html&gt;<br />&lt;HEAD&gt;<br />&lt;title&gt;利用AJAX调用whois查询&lt;/title&gt;<br />&lt;meta&nbsp;http-equiv="Content-Type"&nbsp;content="text/html;&nbsp;charset=gb2312"&gt;<br />&lt;META&nbsp;NAME&nbsp;="keywords"&nbsp;CONTENT="利用AJAX调用whois查询"&gt;<br />&lt;META&nbsp;NAME="description"&nbsp;CONTENT="利用AJAX调用whois查询"&gt;<br />&lt;META&nbsp;NAME="robots"&nbsp;CONTENT="all"&gt;<br />&lt;META&nbsp;name="AUTHOR"&nbsp;content="Anlige"&gt;<br />&lt;script&nbsp;language="javascript"&nbsp;src="fun.js"&gt;&lt;/script&gt;<br />&lt;/HEAD&gt;<br />&lt;BODY&gt;<br />&lt;form&nbsp;name="se"&gt;<br />&lt;input&nbsp;type="text"&nbsp;name="domain"&gt;<br />&lt;input&nbsp;type="button"&nbsp;value="查询"&nbsp;onclick="Request(se.domain.value,'get')"&gt;<br />&lt;/form&gt;<br />&lt;div&nbsp;id="whois"&gt;<br />&lt;/div&gt;<br />&lt;/body&gt;<br />&lt;/html&gt;<br /></div></div><br />fun.js内容&nbsp;&nbsp;<br />&nbsp;<div class="code"><div class="code_title"><span> &nbsp;<img src="images/code.gif" alt="" style="padding:0px;border:0px;" /></span>&nbsp;&nbsp;&nbsp;<a href="javascript:void(0);" onclick="window.clipboardData.setData('Text',this.parentNode.parentNode.childNodes[1].outerText);alert('븴Ƴɹ,Ctrl+VճҪλ!!');">ȫ</a></div><div class="code_content"><br />var&nbsp;a="http://whois.hichina.com/cgi-bin/whois?domain=";<br />var&nbsp;b="&B1=GO";<br />function&nbsp;CreateXMLHttpRequest()&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;request&nbsp;=&nbsp;false;<br />&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(window.XMLHttpRequest)&nbsp;{&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;request&nbsp;=&nbsp;new&nbsp;XMLHttpRequest();&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(request.overrideMimeType)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;request.overrideMimeType('text/xml');<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;else&nbsp;if&nbsp;(window.ActiveXObject)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;try&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;request&nbsp;=&nbsp;new&nbsp;ActiveXObject("Msxml2.XMLHTTP");<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;catch&nbsp;(e)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;try&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;request&nbsp;=&nbsp;new&nbsp;ActiveXObject("Microsoft.XMLHTTP");<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;catch&nbsp;(e)&nbsp;{return&nbsp;false;}<br />&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(!request)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert('Create&nbsp;XMLHTTP&nbsp;Object&nbsp;false.');<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;false;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;request;<br />}<br /><br />function&nbsp;Request(domain,method)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;obj=document.getElementById("whois");&nbsp;&nbsp;//定位到div&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;xmlHttp&nbsp;=&nbsp;CreateXMLHttpRequest();<br />&nbsp;&nbsp;&nbsp;&nbsp;xmlHttp.open(method,&nbsp;a+domain+b,&nbsp;true);<br />&nbsp;&nbsp;&nbsp;&nbsp;//xmlHttp.setRequestHeader("Content-Length",&nbsp;body.length);<br />&nbsp;&nbsp;&nbsp;&nbsp;//xmlHttp.setRequestHeader("Content-Type",&nbsp;"application/x-www-form-urlencoded");&nbsp;//application/x-www-form-urlencoded<br />&nbsp;&nbsp;&nbsp;&nbsp;xmlHttp.onreadystatechange&nbsp;=&nbsp;function(){<br />&nbsp;&nbsp;&nbsp;&nbsp;if(xmlHttp.readyState==4){&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//4代表数据已经从服务器返回&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(xmlHttp.status==200){&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//200代表页面正常&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;strResult&nbsp;=xmlHttp.responseText;&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;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;c=strResult.search(/\&lt;pre\&gt;/);&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;d=strResult.search(/\&lt;\/pre\&gt;/);&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;str=strResult.substr(c+5,d-c-5);&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;str=str.replace(/\n/gi,'&lt;br&gt;');&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//显示信息&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;str=str.replace(/请.*$/,'');&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//显示信息&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;obj.innerHTML=str;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}else{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;obj.innerHTML="服务器返回错误!";&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;}else{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;obj.innerHTML="数据请求中...";&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;xmlHttp.send(null);<br />}<br /></div></div><br /><br /><br /><br />]]>
      </description>
      <category>AJAX</category>
   </item>
</channel>
</rss>
