• <fieldset id="8imwq"><menu id="8imwq"></menu></fieldset>
  • <bdo id="8imwq"><input id="8imwq"></input></bdo>
    最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
    問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
    當(dāng)前位置: 首頁 - 科技 - 知識百科 - 正文

    javascript Ajax 類實(shí)現(xiàn)代碼

    來源:懂視網(wǎng) 責(zé)編:小采 時(shí)間:2020-11-27 22:52:36
    文檔

    javascript Ajax 類實(shí)現(xiàn)代碼

    javascript Ajax 類實(shí)現(xiàn)代碼:與現(xiàn)在那些Ajax框架比較,優(yōu)劣之處?看完再說吧: 1、Ajax.js 代碼如下:/* AJAX v1.4 HJF 2009-7-5 */ function AjaxDO(){ this.HttpRequest = null; this.openMethod = null; //HTTP請求的方法,為Get、Post 或者
    推薦度:
    導(dǎo)讀javascript Ajax 類實(shí)現(xiàn)代碼:與現(xiàn)在那些Ajax框架比較,優(yōu)劣之處?看完再說吧: 1、Ajax.js 代碼如下:/* AJAX v1.4 HJF 2009-7-5 */ function AjaxDO(){ this.HttpRequest = null; this.openMethod = null; //HTTP請求的方法,為Get、Post 或者

    與現(xiàn)在那些Ajax框架比較,優(yōu)劣之處?看完再說吧:
    1、Ajax.js
    代碼如下:
    /*
        AJAX v1.4
        HJF 2009-7-5
    */
    function AjaxDO(){

        this.HttpRequest = null;

        this.openMethod = null; //HTTP請求的方法,為Get、Post 或者Head

        this.openURL = null; //是目標(biāo)URL。基于安全考慮,這個(gè)URL 只能是同網(wǎng)域的,否則會提示“沒有權(quán)限”的錯(cuò)誤。

        this.openAsync = null; //是指定在等待服務(wù)器返回信息的時(shí)間內(nèi)是否繼續(xù)執(zhí)行下面的代碼。如果為False,則不會繼續(xù)執(zhí)行,直到服務(wù)器返回信息。默認(rèn)為True。

        this.ProcessRequestFunction = function(_HttpRequest) {return;} //處理返回信息的函數(shù)入口

        this.ProcessRequestParam = null; //處理訪問信息時(shí)的附加參數(shù)

        this.LoadingImg = null; //正在載入的圖片,一般為.gif動畫

        //初始化HttpRequest
        this.InitHttpRequest = function(){
            var http;

        //    try {
        //        http = new ActiveXObject("Msxml2.XMLHTTP");
        //    } catch(e) {
        //        try {
        //            http = new ActiveXObject("Microsoft.XMLHTTP");
        //        } catch(e) {
        //            http = false;
        //        }
        //    }

            try    {
                if(window.ActiveXObject){
                    for(var i=5; i; i--){
                        try{
                            if(i==2){
                                http = new ActiveXObject("Microsoft.XMLHTTP");
                            }else{
                                http = new ActiveXObject( "Msxml2.XMLHTTP." + i + ".0" );
                            }
                            break;
                        }catch(e){
                            //alert(i);
                            http = false;
                        }
                    }
                }else if(window.XMLHttpRequest){
                    http = new XMLHttpRequest();
                    if(http.overrideMimeType){
                        http.overrideMimeType("text/xml");
                    }
                }
            }catch(e){
                http = false;
            }

            if(!http){
                Alert("不能創(chuàng)建XMLHttpRequest對象實(shí)例");
                return http;
            }

            this.HttpRequest = http;
            return http;
        }

        //檢測 this.HttpRequest
        this.checkHttpRequest = function(){
            if(!this.HttpRequest){
                return this.InitHttpRequest();
            }
            return this.HttpRequest;
        }

        //修改MIME類別
        //http.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); //如果要傳文件或者Post 內(nèi)容給服務(wù)器
        //http.setRequestHeader("Content-Type","text/xml");
        //http.setRequestHeader("Content-Type","gb2312");
        this.setRequestHeader = function(mime){
            if(!this.checkHttpRequest()){
                return false;
            }
            try{
                this.HttpRequest.setRequestHeader("Content-Type", mime);
                return true;
            }catch(e){
                if(e instanceof Error){
                    Alert("修改MIME類別錯(cuò)誤");
                    return false;
                }
            }
        }

        //設(shè)置狀態(tài)改變的事件觸發(fā)器
        this.setOnReadyStateChange = function(funHandle, Param){
            if(!this.checkHttpRequest()){
                return false;
            }
            this.ProcessRequestFunction = funHandle;
            this.ProcessRequestParam = Param;
            return true;
        }

        this.setLoadingImg = function(ImgID){
            this.LoadingImg = ImgID;
        }

        //建立HTTP連接
        //open("method","URL"[,asyncFlag[,"userName"[, "password"]]])
        this.Open = function(method, url, async, username, psw){
            if(!this.checkHttpRequest()){
                return false;
            }
            this.openMethod = method;
            this.openURL = url;
            this.openAsync = async;
            if((this.openMethod==null) || ((this.openMethod.toUpperCase()!="GET")&&(this.openMethod.toUpperCase()!="POST")&&(this.openMethod.toUpperCase()!="HEAD"))){
                Alert("請指定HTTP請求的方法,為Get、Post 或者Head");
                return false;
            }
            if((this.openURL==null)||(this.openURL=="")){
                Alert("請指定目標(biāo)URL");
                return false;
            }
            try{
                this.HttpRequest.open(this.openMethod, this.openURL, this.openAsync, username, psw);
            }catch(e){
                if(e instanceof Error){
                    Alert("無法建立HTTP連接");
                    return false;
                }
            }

            if(this.openMethod.toUpperCase()=="POST"){
                if(!this.setRequestHeader("application/x-www-form-urlencoded")){
                    Alert("修改MIME類別失敗");
                    return false;
                }
            }

            if(this.openAsync){ //異步模式,程序繼續(xù)執(zhí)行
                if(this.ProcessRequestFunction==null){
                    Alert("請指定處理返回信息的函數(shù)");
                    return false;
                }
                var _http_request_ajax = this.HttpRequest;
                var _this_ajax = this;
                this.HttpRequest.onreadystatechange = function(){
                    if(_http_request_ajax.readyState==4) {
                        if(_http_request_ajax.status==200) {
                            _this_ajax.ProcessRequestFunction(_http_request_ajax, _this_ajax.ProcessRequestParam, _this_ajax.LoadingImg);
                        }else{
                            Alert("您所請求的頁面有異常。");
                            return false;
                        }
                    }
                }
            }

            if(this.LoadingImg!=null){
                funShow(this.LoadingImg);
            }

            return true;
        }

        //向服務(wù)器發(fā)出HTTP請求
        //格式:name=value&anothername=othervalue&so=on
        this.Send = function(idata){
            if(!this.checkHttpRequest()){
                return false;
            }
            var data = null;
            if(this.openMethod.toUpperCase()=="POST"){
                data = funEscapeAll(idata);
            }
            try{
                this.HttpRequest.send(data);
                return true;
            }catch(e){
                if(e instanceof Error){
                    Alert("向服務(wù)器發(fā)出HTTP請求失敗");
                    return false;
                }
            }
        }

        //處理服務(wù)器返回的信息
        this.getResponseText = function(type){
            if(!this.checkHttpRequest()){
                return false;
            }
            if(this.HttpRequest.readyState==4) {
                if(this.HttpRequest.status==200) {
                    if((type!=null) && (type.toUpperCase()=="XML")){
                        return this.HttpRequest.responseXML;
                    }
                    return this.HttpRequest.responseText;
                }else{
                    Alert("您所請求的頁面有異常。");
                    return false;
                }
            }
        }

        //停止當(dāng)前請求
        this.abort = function(){
            if(!this.checkHttpRequest()){
                return false;
            }

            if(this.LoadingImg!=null){
                funHide(this.LoadingImg);
            }

            if(this.HttpRequest.readyState>0 && this.HttpRequest.readyState<4){
                this.HttpRequest.abort();
            }
        }

    }

    //=====================================================================================
    //公共函數(shù)
    //=====================================================================================
    function $(_obj){
        var o;
        if (typeof(_obj)!="string")
            return _obj;
        else{
            try{
                document.all;
                try{
                    o=document.all(_obj);
                }catch(e){
                    return null;
                }
            }catch(ee){
                try{
                    o=document.getElementById(_obj);
                }catch(e){
                    return null;
                }
            }
            return o;
        }
    }

    function funEscapeAll(str){
        var t = "&";
        var s = str.split(t);
        if(s.length<=0)    return str;
        for(var i=0; i<s.length; i++){
            s[i] = funEscapeOne(s[i]);
        }
        return s.join(t);
    }

    function funEscapeOne(str){
        var i = str.indexOf("=");
        if(i==-1) return str;
        var t = URLEncode(str.substr(i+1));
        return str.substring(0, i+1)+t;
    }

    function URLEncode(str){
        return encodeURIComponent(str);
    /*    
        return escape(str).replace(/\+/g, "%2B").
                    replace(/\"/g,"%22").
                     replace(/\'/g, "%27").
                         replace(/\//g,"%2F");
    */
    }

    function funEscapeXML(content) {
    if (content == undefined)
    return "";
    if (!content.length || !content.charAt)
    content = new String(content);
    var result = "";
    var length = content.length;
    for (var i = 0; i < length; i++) {
    var ch = content.charAt(i);
    switch (ch) {
    case '&':
    result += "&";
    break;
    case '<':
    result += "<";
    break;
    case '>':
    result += ">";
    break;
    case '"':
    result += """;
    break;
    case '\'':
    result += "'";
    break;
    default:
    result += ch;
    }
    }
    return result;
    }

    function funShow(_obj){
        if(typeof(_obj)=="object")
            _obj.style.visibility = "inherit";
        else
            $(_obj).style.visibility = "inherit";
    }

    function funHide(_obj){
        if(typeof(_obj)=="object")
            _obj.style.visibility = "hidden";
        else
            $(_obj).style.visibility = "hidden";
    }

    function Alert(str){
        alert(str);
        //window.status = str;
    }

    /*

    使用例子:

    function processRequest(http_request, _val, _loading_img){
        if(http_request.responseXML.documentElement){
            //alert(decodeURIComponent(http_request.responseXML.documentElement.xml));
        }else{
            //alert(decodeURIComponent(http_request.responseText));
        }
        alert(_val);
        funHide(_loading_img);
    }

    1、GET
        var ajax = new AjaxDO();

        ajax.setLoadingImg(_loading_img);
        ajax.setOnReadyStateChange(processRequest, _val);
        ajax.Open("GET", url, true); //異步模式,程序繼續(xù)執(zhí)行
        ajax.Send("");

        ajax.Open("GET", url, false); //非異步模式,程序等待
        ajax.Send("");
        var xml_doc = ajax.getResponseText("XML");
        var text_doc = ajax.getResponseText("TEXT");

    2、POST
        var ajax = new AjaxDO();

        ajax.setLoadingImg(_loading_img);
        ajax.setOnReadyStateChange(processRequest, _val);
        ajax.Open("POST", url, true); //異步模式,程序繼續(xù)執(zhí)行
        ajax.Send(data);

        ajax.Open("POST", url, false); //非異步模式,程序等待
        ajax.Send(data);
        var xml_doc = ajax.getResponseText("XML");
        var text_doc = ajax.getResponseText("TEXT");

        
    注,客戶端發(fā)送帶有中文或HTML腳本的信息時(shí),發(fā)送的信息必須調(diào)用:encodeURIComponent函數(shù),例如:
    var data = encodeURIComponent($('message').value);
    實(shí)際是調(diào)用了兩次,Ajax類內(nèi)部又調(diào)用一次。

    服務(wù)端(Java版)需要做下轉(zhuǎn)碼:
    String message = request.getParameter("message");
    message = URLDecoder.decode(message, "UTF-8");

    */

    注,客戶端發(fā)送帶有中文或HTML腳本的信息時(shí),發(fā)送的信息必須調(diào)用:encodeURIComponent函數(shù),例如:
    var data = encodeURIComponent($('message').value);
    實(shí)際是調(diào)用了兩次,Ajax類內(nèi)部又調(diào)用一次。

    服務(wù)端(Java版)需要做下轉(zhuǎn)碼:

    String message = request.getParameter("message");
    message = URLDecoder.decode(message, "UTF-8");
    2、Demo.html
    代碼如下:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    <title>Ajax類</title>
    <script src="Ajax.js" src="Ajax.js"></script>

    <style type="text/css"><!--
    #Layer1 {
        position:absolute;
        left:670px;
        top:11px;
        width:15px;
        height:15px;
        z-index:10000;
        background-color:#FF0000;
        font-size:13;
        border:none;
        visibility:hidden;
    }
    --></style><style type="text/css" bogus="1">#Layer1 {
        position:absolute;
        left:670px;
        top:11px;
        width:15px;
        height:15px;
        z-index:10000;
        background-color:#FF0000;
        font-size:13;
        border:none;
        visibility:hidden;
    }</style>
    </head>

    <body>
    <div id="Layer1"><img src="indicator_flower.gif" src="indicator_flower.gif" width="15" /></div>
    <script type="text/javascript" language="javascript"><!--
    function processRequest(http_request, _val, _loading_img){
        alert(http_request.responseXML.documentElement.xml);
        //alert(http_request.responseText);
        funHide(_loading_img);
    }
    // --></script>
    <script type="text/javascript" language="javascript"><!--
    var url = "http://www.w3schools.com/xml/simple.xml";
    var data = "";

    var ajax = new AjaxDO();

    function btnAjax1(){
        //var ajax = new AjaxDO();
        //ajax.InitHttpRequest();
        ajax.abort();

        ajax.setLoadingImg(document.getElementById("Layer1"));
        ajax.setOnReadyStateChange(processRequest);
        ajax.Open("GET", url, true); //異步模式,程序繼續(xù)執(zhí)行
        ajax.Send("");
    }

    function btnAjax2(){
        //var ajax = new AjaxDO();
        //ajax.InitHttpRequest();
        ajax.abort();

        ajax.Open("GET", url, false); //非異步模式,程序等待
        ajax.Send("");
        alert(ajax.getResponseText("XML").documentElement.xml);
        alert(ajax.getResponseText("TEXT"));
    }
    // --></script>
    <button onclick="btnAjax1()">異步模式</button>
    <button onclick="btnAjax2()">非異步模式</button>
    </body>
    </html>

    3、圖片

    聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

    文檔

    javascript Ajax 類實(shí)現(xiàn)代碼

    javascript Ajax 類實(shí)現(xiàn)代碼:與現(xiàn)在那些Ajax框架比較,優(yōu)劣之處?看完再說吧: 1、Ajax.js 代碼如下:/* AJAX v1.4 HJF 2009-7-5 */ function AjaxDO(){ this.HttpRequest = null; this.openMethod = null; //HTTP請求的方法,為Get、Post 或者
    推薦度:
    標(biāo)簽: 實(shí)現(xiàn) js 代碼
    • 熱門焦點(diǎn)

    最新推薦

    猜你喜歡

    熱門推薦

    專題
    Top
    主站蜘蛛池模板: 欧美日韩国产中文精品字幕自在自线| 日韩一区精品视频一区二区| 欧美日韩精品系列一区二区三区| 国产精品禁18久久久夂久| 国产综合色产在线精品| 国产精品久久久久AV福利动漫| 欧美日韩国产精品 | 久久精品综合一区二区三区| 国产AV午夜精品一区二区三区| 日韩午夜高清福利片在线观看欧美亚洲精品suv | 亚洲国产小视频精品久久久三级| 91精品国产成人网在线观看| 国产精品jizz视频| 亚洲AV无码久久精品成人| 欧美国产精品久久高清| 国产精品99久久久久久猫咪| 久久99久久99小草精品免视看| 国产精品一区二区久久不卡| 亚洲国产精品尤物yw在线| 精品第一国产综合精品蜜芽| 亚洲精品天天影视综合网| 国产精品亚洲片在线va| 国产精品久线在线观看| 日韩精品少妇无码受不了| 一本一道精品欧美中文字幕| 拍国产乱人伦偷精品视频| 精品国产一区二区三区久久蜜臀 | 97视频在线观看这里只有精品| 日韩人妻精品一区二区三区视频| 亚洲av午夜精品一区二区三区| 精品日韩欧美国产| 精品国产91久久久久久久a| 国产精品内射久久久久欢欢 | 国产精品自在欧美一区| 成人精品一区二区三区在线观看| 麻豆精品成人免费国产片| 国产成人精品日本亚洲网址| 99精品视频在线| 成人国内精品久久久久影院| 99久久免费国产精精品| 国产精品一在线观看|