[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);
源代码:
下载: 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 }
我用这个脚本也做了个例子: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 里面的第三段代码。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
浙公网安备 33010602011771号