[js]轻便的XMLHttpRequest应用函数:downloadUrl()
程序员文章站
2022-04-14 12:04:21
前段时间在用google map api的函数库的时候,发现里面的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.5.0', 'msxml2.xmlhttp.4.0', 'msxml2.xmlhttp.3.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);
}
}
}
}
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.5.0', 'msxml2.xmlhttp.4.0', 'msxml2.xmlhttp.3.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);
}
}
}
}
上一篇: Nuxt.js项目不识别import原因及解决方法
下一篇: 用java实现正则表达式