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

本文介绍了一种简易的downloadUrl函数实现方法,该函数能够通过GET或POST方式发送请求,并在回调函数中处理响应数据。文章提供了具体用法示例及源代码。

前段时间在用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);

源代码:

下载: download_url.js

 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 里面的第三段代码。

转载于:https://www.cnblogs.com/zhaoxiaoyang/archive/2007/12/30/1021068.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值