﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>IT博客-linus2k-文章分类-AJAX</title><link>http://www.cnitblog.com/linus2k/category/1994.html</link><description>君子常当当的博客</description><language>zh-cn</language><lastBuildDate>Mon, 26 Sep 2011 07:06:05 GMT</lastBuildDate><pubDate>Mon, 26 Sep 2011 07:06:05 GMT</pubDate><ttl>60</ttl><item><title>自己写的一个ajax框架，希望大家多提意见</title><link>http://www.cnitblog.com/linus2k/articles/6934.html</link><dc:creator>君子常当当</dc:creator><author>君子常当当</author><pubDate>Sat, 25 Feb 2006 03:59:00 GMT</pubDate><guid>http://www.cnitblog.com/linus2k/articles/6934.html</guid><wfw:comment>http://www.cnitblog.com/linus2k/comments/6934.html</wfw:comment><comments>http://www.cnitblog.com/linus2k/articles/6934.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/linus2k/comments/commentRss/6934.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/linus2k/services/trackbacks/6934.html</trackback:ping><description><![CDATA[<P>/**<BR>&nbsp;ajax_frame.js<BR>&nbsp;Ajax Frame Version 1.0<BR>*/<BR>function ajax_frame()<BR>{<BR>&nbsp;var config&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = new Array();<BR>&nbsp;var httpobj&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= null;&nbsp;<BR>&nbsp;<BR>&nbsp;config['transfer_mode']&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = 'GET';<BR>&nbsp;config['async']&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = true;<BR>&nbsp;<BR>&nbsp;/* 设置传输模式 */<BR>&nbsp;this.set_transfer_mode = function()<BR>&nbsp;{<BR>&nbsp;&nbsp;if ('GET' == arguments[0].toUpperCase() || 'POST' == arguments[0].toUpperCase())<BR>&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;config['transfer_mode'] = arguments[0].toUpperCase();<BR>&nbsp;&nbsp;}<BR>&nbsp;}// end set_transfer_mode;<BR>&nbsp;<BR>&nbsp;this.set_async = function()<BR>&nbsp;{<BR>&nbsp;&nbsp;if ('boolean' == typeof arguments[0]) <BR>&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;config['async'] = arguments[0];<BR>&nbsp;&nbsp;}<BR>&nbsp;}// end set_async;<BR>&nbsp;<BR>&nbsp;/*********************************************<BR>&nbsp;*&nbsp;函数名称：call_func<BR>&nbsp;*&nbsp;arguments[0]&nbsp;目标文件的url<BR>&nbsp;*&nbsp;arguments[1]&nbsp;调用的函数<BR>&nbsp;*&nbsp;arguments[2]&nbsp;响应函数<BR>&nbsp;*&nbsp;arguments[3]&nbsp;url要传递的对象1<BR>&nbsp;*&nbsp;&nbsp;.<BR>&nbsp;*&nbsp;&nbsp;.<BR>&nbsp;*&nbsp;&nbsp;.<BR>&nbsp;*&nbsp;arguments[n+3]&nbsp;url要传递的对象n<BR>&nbsp;************************************************/<BR>&nbsp;this.call_func = function()<BR>&nbsp;{<BR>&nbsp;&nbsp;if ('function' == typeof arguments[2]) <BR>&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;client_callback = arguments[2];<BR>&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;get_connection_object();</P>
<P>&nbsp;&nbsp;var i;<BR>&nbsp;&nbsp;var query_string = "?function=" + arguments[1];<BR>&nbsp;&nbsp;//if ('' == arguments[1]) <BR>&nbsp;&nbsp;//query_string = "?function=" + arguments[1];<BR>&nbsp;&nbsp;var field = null;<BR>&nbsp;&nbsp;for(i = 3; i &lt; arguments.length; i++)<BR>&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;field = arguments[i];<BR>&nbsp;&nbsp;&nbsp;query_string = query_string + '&amp;' + field.name + '=' + field.value;<BR>&nbsp;&nbsp;}</P>
<P>&nbsp;&nbsp;/* 把时间戳加入url为的是保持url唯一性，避免浏览器缓存结果 */<BR>&nbsp;&nbsp;var remote_url = arguments[0] + query_string + '&amp;timeStamp=' + new Date().getTime();<BR>&nbsp;&nbsp;<BR>&nbsp;&nbsp;httpobj.open(config['transfer_mode'], remote_url, config['async']);</P>
<P>&nbsp;&nbsp;if ("POST" == config['transfer_mode']) <BR>&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;try {<BR>&nbsp;&nbsp;&nbsp;&nbsp;httpobj.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");<BR>&nbsp;&nbsp;&nbsp;} catch (cp_err) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;alert('[错误] 无法发送POST请求，请使用GET方式发送');<BR>&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;}</P>
<P>&nbsp;&nbsp;httpobj.onreadystatechange = callback;<BR>&nbsp;&nbsp;httpobj.setRequestHeader("Cache-Control","no-cache");<BR>&nbsp;&nbsp;httpobj.setRequestHeader("Pragma","no-cache");&nbsp;&nbsp;<BR>&nbsp;&nbsp;if ('GET' == config['transfer_mode']) <BR>&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;httpobj.send(null);<BR>&nbsp;&nbsp;&nbsp; &nbsp;} <BR>&nbsp;&nbsp;&nbsp; &nbsp;else <BR>&nbsp;&nbsp;&nbsp; &nbsp;{<BR>&nbsp;&nbsp;&nbsp;httpobj.send(query_string);<BR>&nbsp;&nbsp;}</P>
<P>&nbsp;&nbsp;if (false == config['async']) <BR>&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;callback();<BR>&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;}//end call_func</P>
<P>&nbsp;var callback = function()<BR>&nbsp;{<BR>&nbsp;&nbsp;var response = null;<BR>&nbsp;&nbsp;if (4 == httpobj.readyState) <BR>&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;if (200 == httpobj.status)<BR>&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;response = httpobj.responseText;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;if (response != null &amp;&amp; typeof client_callback == 'function') <BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;client_callback(response, httpobj.responseText);<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;}<BR>&nbsp;}// end of callback<BR>&nbsp;<BR>&nbsp;/****************************************<BR>&nbsp;* 得到XMLHTTP连接对象<BR>&nbsp;*****************************************/<BR>&nbsp;var get_connection_object = function()<BR>&nbsp;{<BR>&nbsp;&nbsp;try {<BR>&nbsp;&nbsp;&nbsp;httpobj = new ActiveXObject('Msxml2.XMLHTTP');<BR>&nbsp;&nbsp;} catch (e) <BR>&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;try {<BR>&nbsp;&nbsp;&nbsp;&nbsp;httpobj = new ActiveXObject('Microsoft.XMLHTTP');<BR>&nbsp;&nbsp;&nbsp;} catch (oc) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;httpobj = null;<BR>&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;}</P>
<P>&nbsp;&nbsp;if (!httpobj &amp;&amp; typeof XMLHttpRequest != 'undefined') {<BR>&nbsp;&nbsp;&nbsp;httpobj = new XMLHttpRequest();<BR>&nbsp;&nbsp;}</P>
<P>&nbsp;&nbsp;if (!httpobj) {<BR>&nbsp;&nbsp;&nbsp;alert('[错误] 浏览器不支持AJAX对象');<BR>&nbsp;&nbsp;} else {<BR>&nbsp;&nbsp;&nbsp;return_value = true;<BR>&nbsp;&nbsp;}<BR>&nbsp;&nbsp;<BR>&nbsp;&nbsp;if (httpobj.readyState != 4) <BR>&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;httpobj.abort();<BR>&nbsp;&nbsp;}<BR>&nbsp;&nbsp;return return_value;<BR>&nbsp;}// end of get_connection_object<BR>}<BR><BR>使用方式：<BR>sample.html<BR>&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "<A href="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd</A>"&gt;<BR>&lt;html xmlns="<A href="http://www.w3.org/1999/xhtml">http://www.w3.org/1999/xhtml</A>"&gt;<BR>&lt;head&gt;<BR>&lt;meta http-equiv="Content-Type" content="text/html; charset=gb2312" /&gt;<BR>&lt;script language="javascript" src="js/ajax_frame.js" type="text/javascript"&gt;&lt;/script&gt;<BR>&lt;script language="javascript" type="text/javascript"&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; window.onload = function()<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var button = document.getElementById('say');<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; button.onclick = function()<BR>&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; var obj = new ajax_frame;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var txt = document.getElementById('person');<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; obj.call_func("helloworld.php", "helloworld", response_func, txt);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; function response_func(result)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; alert(result);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&lt;/script&gt;</P>
<P>&lt;title&gt;无标题文档&lt;/title&gt;<BR>&lt;/head&gt;</P>
<P>&lt;body&gt;<BR>&lt;form id="form1" name="form1" method="post" action=""&gt;<BR>&nbsp; &lt;input type="text" name="person" id="person" /&gt;<BR>&nbsp; &lt;input type="button" name="say" id="say" value="Say Hello Word" /&gt;<BR>&lt;/form&gt;<BR>&lt;/body&gt;<BR>&lt;/html&gt;<BR><BR>helloworld.php<BR>&lt;?php<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $func =&nbsp; $_GET['function'];<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $uid = $_POST['txtUID'];<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $pwd = $_POST['txtPWD'];</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (function_exists($func))<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $func($uid, $pwd);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; echo "0";<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; function helloworld()<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; echo $_GET["person"] . " say hello world!";<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>?&gt;<BR><BR>目前还没有支持xml，以后会加上。</P><img src ="http://www.cnitblog.com/linus2k/aggbug/6934.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/linus2k/" target="_blank">君子常当当</a> 2006-02-25 11:59 <a href="http://www.cnitblog.com/linus2k/articles/6934.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>