<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題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關鍵字專題關鍵字專題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
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        javascript Ajax 類實現代碼

        來源:懂視網 責編:小采 時間:2020-11-27 22:52:36
        文檔

        javascript Ajax 類實現代碼

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

        與現在那些Ajax框架比較,優劣之處?看完再說吧:
        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; //是目標URL。基于安全考慮,這個URL 只能是同網域的,否則會提示“沒有權限”的錯誤。

            this.openAsync = null; //是指定在等待服務器返回信息的時間內是否繼續執行下面的代碼。如果為False,則不會繼續執行,直到服務器返回信息。默認為True。

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

            this.ProcessRequestParam = null; //處理訪問信息時的附加參數

            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("不能創建XMLHttpRequest對象實例");
                    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 內容給服務器
            //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類別錯誤");
                        return false;
                    }
                }
            }

            //設置狀態改變的事件觸發器
            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("請指定目標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){ //異步模式,程序繼續執行
                    if(this.ProcessRequestFunction==null){
                        Alert("請指定處理返回信息的函數");
                        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;
            }

            //向服務器發出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("向服務器發出HTTP請求失敗");
                        return false;
                    }
                }
            }

            //處理服務器返回的信息
            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;
                    }
                }
            }

            //停止當前請求
            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();
                }
            }

        }

        //=====================================================================================
        //公共函數
        //=====================================================================================
        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); //異步模式,程序繼續執行
            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); //異步模式,程序繼續執行
            ajax.Send(data);

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

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

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

        */

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

        服務端(Java版)需要做下轉碼:

        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); //異步模式,程序繼續執行
            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、圖片

        聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        javascript Ajax 類實現代碼

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

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 亚洲国产成人精品不卡青青草原| 亚洲免费在线观看视频| 日本人的色道免费网站| 99re热精品视频国产免费| 67194熟妇在线永久免费观看| 国产精品青草视频免费播放| 国产激情免费视频在线观看| 久久免费的精品国产V∧| 无码专区—VA亚洲V天堂| 亚洲熟妇无码一区二区三区导航| 亚洲娇小性色xxxx| 精选影视免费在线 | 中文字幕精品亚洲无线码一区| 国产精品成人免费福利| 亚洲国产精品人久久电影| 亚洲老熟女五十路老熟女bbw| 亚洲人成影院午夜网站| 2019中文字幕在线电影免费| 免费a级毛片在线观看| 久久久亚洲欧洲日产国码二区| 亚洲国产一区二区a毛片| 在线免费中文字幕| 亚洲免费日韩无码系列| 亚洲一卡二卡三卡四卡无卡麻豆| 亚洲女女女同性video| 免费国产a国产片高清| 精品乱子伦一区二区三区高清免费播放 | 亚洲一区AV无码少妇电影| 成人免费视频88| 久久久亚洲欧洲日产国码aⅴ| 青青草97国产精品免费观看| 无码一区二区三区AV免费| 亚洲AV永久无码精品| 思思久久99热免费精品6| 免费v片视频在线观看视频| 一级做a爰片久久免费| 亚洲毛片网址在线观看中文字幕 | 亚洲AV无码专区在线播放中文| 免费播放美女一级毛片| 黄色网址免费观看| 日本一区二区在线免费观看|