[js] 轻便的XMLHttpRequest应用函数:downloadUrl()

前段时间在用google map api的函数库的时候,发现里面的downloadUrl函数非常好用,所以自己写了一个。用腻了那些什么框架什么池,到头来发现越简单的东西越是适合我这种懒人。

downloadUrl(url, callback, data);

参数说明:
url不用说了;
callback是回调函数,函数调用的时候会有两个参数:data, responseCode,data就是responseText,responseCode就是status;
data是要post的数据,get方式时此参数可省略。

用法一:直接把回调函输写在参数中
downloadUrl(’http://www.ugia.cn/wp-data/test.htm’, function (data, responseCode) {
alert(data); // 这里处理返回的数据
});

用法二:先定义回调函数,然后传入
function test(data, responseCode) {
alert(data); // 这里处理返回的数据
}

downloadUrl(’http://www.ugia.cn/wp-data/test.htm’, test);

源代码:


 1 /**
 2  * download url lite
 3  *
 4  * @author: legend(legendsky@hotmail.com)
 5  * @link: http://www.ugia.cn/?p=122
 6  * @version: 1.0
 7  *
 8  * @param string   url      
 9  * @param string   callback  回调函数
10  * @param string  data      post数据
11  *
12  * @return void
13  */
14 function downloadUrl(url, callback, data)
15 {
16     // init
17     url += url.indexOf("?">= 0 ? "&" : "?";
18     url += "random_download_url=" + Math.random();
19     
20     if (typeof data == 'undefined')
21     {
22         var data = null;
23     }
24 
25     method = data ? 'POST' : 'GET';
26     
27     // create XMLHttpRequest object
28     if (window.XMLHttpRequest)
29     {
30         var objXMLHttpRequest = new XMLHttpRequest();
31     }
32     else
33     {
34         var MSXML = ['MSXML2.XMLHTTP.6.0''MSXML2.XMLHTTP.3.0''MSXML2.XMLHTTP.5.0''MSXML2.XMLHTTP.4.0''MSXML2.XMLHTTP''Microsoft.XMLHTTP'];
35         for(var n = 0; n < MSXML.length; n ++)
36         {
37             try
38             {
39                 var objXMLHttpRequest = new ActiveXObject(MSXML[n]);        
40                 break;
41             }
42             catch(e)
43             {
44             }
45         }
46     }
47     
48     // send request
49     with(objXMLHttpRequest)
50     {
51         //setTimeouts(30*1000,30*1000,30*1000,30*60*1000);
52         try
53         {
54             open(method, url, true);
55             
56             if (method == 'POST')
57             {
58                 setRequestHeader('Content-Type''application/x-www-form-urlencoded; charset=UTF-8');
59             }
60             
61             send(data);            
62         }
63         catch(e)
64         {
65             alert(e);
66         }
67         
68         // on ready
69         onreadystatechange = function()
70         {
71             if (objXMLHttpRequest.readyState == 4)
72             {
73                 callback(objXMLHttpRequest.responseText, objXMLHttpRequest.status);
74                 delete(objXMLHttpRequest);
75             }
76         }
77     }
78 }
我用这个脚本也做了个例子:
 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 2 <html xmlns="http://www.w3.org/1999/xhtml" >
 3 <head>
 4     <title>test</title>
 5     <script type="text/javascript" src="download_url.js"></script>
 6 <script type="text/javascript">
 7 function test(data, responseCode) {
 8 document.getElementById('nameList').innerHTML =data;// 这里处理返回的数据
 9 }
10 function sendAJAX()
11 {
12 downloadUrl('receive.aspx',test);
13 }
14 setInterval('sendAJAX()',1000); 
15 </script> 
16 </head>
17 <body>
18 <div id="nameList"></div>
19 </body>
20 </html>
21 
receive.aspx这个文件请见http://www.cnblogs.com/zhaoxiaoyang/archive/2007/12/30/1021044.html 里面的第三段代码。

posted on 2007-12-30 17:51  破曉之陽  阅读(533)  评论(1)    收藏  举报

导航