封裝 ajax 框架

function getTransport() {    var versions = {        function () {            return new XMLHttpRequest();        },        function () {            return new ActiveXObject("Microsoft.XMLHTTP");        }    };    var request;    for (var i = 0, len = versions.length; i < len; i++) {        var lambda = versions[i];        try {            request = lambda();            break;        } catch (e) {        }    }    return request;}function ajaxRequest(url, options) {    var request = getTransport(); //建立XMLRequest 對象    if (typeof request == 'undefined') {        //拋出異常,說明當期瀏覽器不支持XMLHttpRequest,並退出函數        throw new Error('Your browser does not support XMLHttpRequest');        return;    }    var url = url;    var method = (options.method || 'POST').toUpperCase();    if (method != "GET" && method != 'POST') {        method = "POST";    }    var parameters = options.parameters || null;//須要提交的參數,默認爲null    var headers = options.headers || {}; //須要發送的HTTP頭信息,是一個對象,其成員包含了頭信息的名稱和值的信息    //在請求開始時執行的函數,由用戶指定,默認是一個空函數    var onLoadingEventHandler = options.onLoading || function () {    };    //在請求完成時執行的函數,由用戶指定,默認是一個空函數    var onCompleteEventHandler = options.onComplete || function () {    };    //在請求成功時執行的函數,由用戶指定,默認是一個空函數    var onSuccessEventHandler = options.onSuccess || function () {    };    //在請求失敗時執行的函數,由用戶指定,默認是一個空函數    var onFailureEventHandler = options.onFailure || function () {    };    //若是提交方法被指定爲GET,則將parameters 的內容拼接到URL中,並將parameters 設置爲null    if (method == "GET" && parameters != null) {        if (url.indexOf("?") > -1) {            url += '&' + parameters;        } else {            url += '?' + parameters;        }        parameters = null;    }    //初始化XMLHttpRequest對象    request.open(method,url, true);    request.setRequestHeader('contentType','application/x-www-form-rulencoded');    for(var name in headers){        request.setRequestHeader(name, headers[name]);    }    //註冊XMLHttpRequest 對象的readystatechange事件處理函數        request.onreadystatechange = function () {        if(request.readyState==1){            //當readystate 等於1時,表示請求開始,將當前XMLHttpRequst對象最爲其參數調用onreadystatechange函數            onLoadingEventHandler(request);        }        if(request.readyState ==4){            //當readystate 等於4時,表示請求完成,onCompleteEventHandler函數            onCompleteEventHandler(request);            if(request.status && request.status >=200 && request.status<300){                //當HTTP 狀態碼大於200小於300時,表示請求成功,這時將當前XMLHttpRequest對象做爲其參數調用onSuccessEventHandler函數                onSuccessEventHandler(request);            }else {                //不然表示請求失敗,這時將當前XMLHttpRequest 對象做爲其參數調用onFailureHandler函數                onFailureEventHandler(request);            }        }    };    request.send(parameters); //發送請求}
相關文章
相關標籤/搜索