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