[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 lite
*
* @author: legend(legendsky@hotmail.com)
* @link: http://www.ugia.cn/?p=122
* @version: 1.0
*
* @param string url
* @param string callback 回调函数
* @param string data post数据
*
* @return void
*/
function downloadUrl(url, callback, data)
{
// init
url += url.indexOf("?") >= 0 ? "&" : "?";
url += "random_download_url=" + Math.random();
if (typeof data == 'undefined')
{
var data = null;
}
method = data ? 'POST' : 'GET';
// create XMLHttpRequest object
if (window.XMLHttpRequest) {
var objXMLHttpRequest = new XMLHttpRequest();
} else {
var MSXML = ['MSXML2.XMLHTTP.6.0', 'MSXML2.XMLHTTP.3.0', 'MSXML2.XMLHTTP.5.0', 'MSXML2.XMLHTTP.4.0', 'MSXML2.XMLHTTP', 'Microsoft.XMLHTTP'];
for(var n = 0; n < MSXML.length; n ++) {
try {
var objXMLHttpRequest = new ActiveXObject(MSXML[n]);
break;
} catch(e) {}
}
}
// send request
with(objXMLHttpRequest) {
//setTimeouts(30*1000,30*1000,30*1000,30*60*1000);
try {
open(method, url, true);
if (method == 'POST')
setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
send(data);
} catch(e) { alert(e);}
// on ready
onreadystatechange = function() {
if (objXMLHttpRequest.readyState == 4) {
callback(objXMLHttpRequest.responseText, objXMLHttpRequest.status);
delete(objXMLHttpRequest);
}
}
}
}
* download url lite
*
* @author: legend(legendsky@hotmail.com)
* @link: http://www.ugia.cn/?p=122
* @version: 1.0
*
* @param string url
* @param string callback 回调函数
* @param string data post数据
*
* @return void
*/
function downloadUrl(url, callback, data)
{
// init
url += url.indexOf("?") >= 0 ? "&" : "?";
url += "random_download_url=" + Math.random();
if (typeof data == 'undefined')
{
var data = null;
}
method = data ? 'POST' : 'GET';
// create XMLHttpRequest object
if (window.XMLHttpRequest) {
var objXMLHttpRequest = new XMLHttpRequest();
} else {
var MSXML = ['MSXML2.XMLHTTP.6.0', 'MSXML2.XMLHTTP.3.0', 'MSXML2.XMLHTTP.5.0', 'MSXML2.XMLHTTP.4.0', 'MSXML2.XMLHTTP', 'Microsoft.XMLHTTP'];
for(var n = 0; n < MSXML.length; n ++) {
try {
var objXMLHttpRequest = new ActiveXObject(MSXML[n]);
break;
} catch(e) {}
}
}
// send request
with(objXMLHttpRequest) {
//setTimeouts(30*1000,30*1000,30*1000,30*60*1000);
try {
open(method, url, true);
if (method == 'POST')
setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
send(data);
} catch(e) { alert(e);}
// on ready
onreadystatechange = function() {
if (objXMLHttpRequest.readyState == 4) {
callback(objXMLHttpRequest.responseText, objXMLHttpRequest.status);
delete(objXMLHttpRequest);
}
}
}
}

06月 3rd, 2007 at 07:10:16
你终于换WP了,我得什么时候换啊。
前台也有setTimeouts?
06月 4th, 2007 at 08:55:12
被逼无耐,只能换了,继续我的PHP之路~~
前台没有~
06月 4th, 2007 at 11:25:38
不错,支持番茄,我相信有你这样的大侠,中国的PHP之路一定会更好的发展下去!^_^
06月 4th, 2007 at 11:26:42
不过我看你的数据转换也很成功呀!
06月 4th, 2007 at 16:25:19
我也要用WP-_-!!
苦于先前做的一些小玩意儿都是基于ASP的。明年坚决换,抽空看PHP。