[js]輕便的XMLHttpRequest應(yīng)用函數(shù):downloadUrl()
更新時間:2007年04月10日 00:00:00 作者:
前段時間在用google map api的函數(shù)庫的時候,發(fā)現(xiàn)里面的downloadUrl函數(shù)非常好用,所以自己寫了一個。用膩了那些什么框架什么池,到頭來發(fā)現(xiàn)越簡單的東西越是適合我這種懶人。
downloadUrl(url, callback, data);
參數(shù)說明:
url不用說了;
callback是回調(diào)函數(shù),函數(shù)調(diào)用的時候會有兩個參數(shù):data, responseCode,data就是responseText,responseCode就是status;
data是要post的數(shù)據(jù),get方式時此參數(shù)可省略。
用法一:直接把回調(diào)函輸寫在參數(shù)中
downloadUrl('http://www.ugia.cn/wp-data/test.htm', function (data, responseCode) {
alert(data); // 這里處理返回的數(shù)據(jù)
});
用法二:先定義回調(diào)函數(shù),然后傳入
function test(data, responseCode) {
alert(data); // 這里處理返回的數(shù)據(jù)
}
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 回調(diào)函數(shù)
* @param string data post數(shù)據(jù)
*
* @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);
參數(shù)說明:
url不用說了;
callback是回調(diào)函數(shù),函數(shù)調(diào)用的時候會有兩個參數(shù):data, responseCode,data就是responseText,responseCode就是status;
data是要post的數(shù)據(jù),get方式時此參數(shù)可省略。
用法一:直接把回調(diào)函輸寫在參數(shù)中
downloadUrl('http://www.ugia.cn/wp-data/test.htm', function (data, responseCode) {
alert(data); // 這里處理返回的數(shù)據(jù)
});
用法二:先定義回調(diào)函數(shù),然后傳入
function test(data, responseCode) {
alert(data); // 這里處理返回的數(shù)據(jù)
}
downloadUrl('http://www.ugia.cn/wp-data/test.htm', test);
源代碼:
復(fù)制代碼 代碼如下:
/**
* download url lite
*
* @author: legend(legendsky@hotmail.com)
* @link: http://www.ugia.cn/?p=122
* @version: 1.0
*
* @param string url
* @param string callback 回調(diào)函數(shù)
* @param string data post數(shù)據(jù)
*
* @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);
}
}
}
}
您可能感興趣的文章:
- javascript XMLHttpRequest對象全面剖析
- js判斷IE6/IE7/FF的代碼[XMLHttpRequest]
- Javascript+XMLHttpRequest+asp.net無刷新讀取數(shù)據(jù)庫數(shù)據(jù)
- javascript創(chuàng)建createXmlHttpRequest對象示例代碼
- 深入講解xhr(XMLHttpRequest)/jsonp請求之a(chǎn)bort
- javascript對XMLHttpRequest異步請求的面向?qū)ο蠓庋b
- JSP XMLHttpRequest動態(tài)無刷新及其中文亂碼處理
- JavaScript下通過的XMLHttpRequest發(fā)送請求的代碼
- javascript一個無懈可擊的實(shí)例化XMLHttpRequest的方法
- AngularJS入門教程之 XMLHttpRequest實(shí)例講解
- JS XMLHttpRequest原理與使用方法深入詳解
相關(guān)文章
活到老學(xué)到老學(xué)習(xí)AJAX跨域(三)
學(xué)習(xí)AJAX其實(shí)有個很重要的應(yīng)用,就是為了執(zhí)行另外幾個站點(diǎn)的ASP,返回結(jié)果。通過本文給大家介紹ajax跨域相關(guān)知識,需要的朋友參考下2016-02-02AJAX初體驗(yàn)之實(shí)戰(zhàn)篇——打造博客無刷新搜索
AJAX初體驗(yàn)之實(shí)戰(zhàn)篇——打造博客無刷新搜索...2006-08-08AjaxFileUpload結(jié)合Struts2實(shí)現(xiàn)多文件上傳(動態(tài)添加文件上傳框)
本文是腳本之家小編給大家分享的AjaxFileUpload結(jié)合Struts2實(shí)現(xiàn)多文件上傳功能,如果項(xiàng)目需求是不確定多少個文件,我們需要動態(tài)的添加文件上傳框,具體實(shí)現(xiàn)代碼大家參考下本文2017-09-09jquery1.8版本使用ajax實(shí)現(xiàn)微信調(diào)用出現(xiàn)的問題分析及解決辦法
這篇文章主要介紹了jquery1.8版本使用ajax實(shí)現(xiàn)微信調(diào)用出現(xiàn)的問題分析及解決辦法的相關(guān)資料,需要的朋友可以參考下2015-11-11