<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
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        原生AJAX封裝的簡單實現

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

        原生AJAX封裝的簡單實現

        原生AJAX封裝的簡單實現:回歸下原生js,網上看到的AJAX封裝,遂拿來改改,不知還有何弊端,望指出! var ajaxHelper = { /*1.0 瀏覽器兼容的方式創建異步對象*/ makeXHR: function () { //聲明異步對象變量 var xmlHttp = false; //聲明 擴展 名 var xm
        推薦度:
        導讀原生AJAX封裝的簡單實現:回歸下原生js,網上看到的AJAX封裝,遂拿來改改,不知還有何弊端,望指出! var ajaxHelper = { /*1.0 瀏覽器兼容的方式創建異步對象*/ makeXHR: function () { //聲明異步對象變量 var xmlHttp = false; //聲明 擴展 名 var xm

        回歸下原生js,網上看到的AJAX封裝,遂拿來改改,不知還有何弊端,望指出!

        var ajaxHelper = {
         /*1.0 瀏覽器兼容的方式創建異步對象*/
         makeXHR: function () {
         //聲明異步對象變量
         var xmlHttp = false;
         //聲明 擴展 名
         var xmlHttpObj = ["MSXML2.XMLHttp.5.0", "MSXML2.XMLHttp.4.0", "MSXML2.XMLHttp.3.0", "MSXML2.XMLHttp", "MSXML.XMLHttp"];
         //判斷瀏覽器是否支持 XMLHttpRequest,如果支持,則是新式瀏覽器,可以直接創建
         if (window.XMLHttpRequest) {
         xmlHttp = new XMLHttpRequest();
         }
         //否則,只能循環遍歷老式瀏覽器異步對象名,嘗試創建,知道創建成功為止
         else if (window.ActiveXObject) {
         for (i = 0; i < xmlHttpObj.length; i++) {
         xmlHttp = new ActiveXObject(xmlHttpObj[i]);
         if (xmlHttp) {
         break;
         }
         }
         }
         //判斷 異步對象 是否創建 成功,如果 成功,則返回異步對象,否則返回false
         return xmlHttp ? xmlHttp : false;
         },
         /*2.0 發送Ajax請求*/
         doAjax: function (method, url, data, isAyn, callback, type) {
         method = method.toLowerCase();
         //2.1創建異步對象
         var xhr = this.makeXHR();
         //2.2設置請求參數(如果是get,則帶url參數,如果不是,則不帶)
         xhr.open(method, url + (method == "get" ? "?" + data : ""), isAyn);
         //2.3根據請求謂詞(get/post),添加不同的請求頭
         if (method == "get") {
         xhr.setRequestHeader("If-Modified-Since", 0);
         } else {
         xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
         }
         //2.4設置回調函數
         xhr.onreadystatechange = function () {
         //如果接受完畢 服務器發回的 響應報文
         if (xhr.readyState == 4) {
         //判斷狀態碼是否正常
         if (xhr.status == 200) {
         if (type.toLowerCase() == "json") {
         var ret = {};
         try {
         if (typeof JSON != "undefined") {
         ret = JSON.parse(xhr.responseText);
         } else {
         //IE8以下不支持JSON
         ret = new Function("return " + xhr.responseText)();
         }
         callback(ret);
         } catch (e) {
         console.log(e.message);
         callback(false);
         }
         } else {
         //直接返回文本
         callback(xhr.responseText);
         }
         } else {
         console.log("AJAX Status Code:" + xhr.status);
         callback(false);
         }
         }
         };
         //2.5發送(如果是post,則傳參數,否則不傳)
         xhr.send(method != "get" ? data : null);
         },
         /*3.0 直接發送Post請求*/
         doPost: function (url, data, isAyn, callback, type) {
         this.doAjax("post", url, data, isAyn, callback, type);
         },
         /*4.0 直接發送Get請求*/
         doGet: function (url, data, isAyn, callback, type) {
         this.doAjax("get", url, data, isAyn, callback, type);
         }
        };

        假設一個需求,后端要求傳入兩個數字n1、n2,然后返回總和。

        當其中一個參數為空或者不是數字時,返回:{"status":"0", "msg":"參數有誤!"}

        當正確的時候,返回:{"status":"1", "sum":"http://n1加n2的和"}

        后端的代碼就不貼出來了。

        前端調用:

        document.getElementById("btnSubmit").onclick = function () {
         ajaxHelper.doPost("后端url", "n1=10&n2=25", true, function (ret) {
         if (!ret) { return; }
         if (ret.status != 1) {
         alert(ret.msg);
         return;
         }
         var n = ret.sum;
         var s = ret.status;
         }, "json");
        };

        以上這篇原生AJAX封裝的簡單實現就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

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

        文檔

        原生AJAX封裝的簡單實現

        原生AJAX封裝的簡單實現:回歸下原生js,網上看到的AJAX封裝,遂拿來改改,不知還有何弊端,望指出! var ajaxHelper = { /*1.0 瀏覽器兼容的方式創建異步對象*/ makeXHR: function () { //聲明異步對象變量 var xmlHttp = false; //聲明 擴展 名 var xm
        推薦度:
        標簽: 實現 封裝 原生
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 久久免费福利视频| 久久一区二区免费播放| 久久www免费人成看片| 91亚洲va在线天线va天堂va国产 | 久久午夜羞羞影院免费观看| 国产午夜亚洲不卡| 中国黄色免费网站| 久久精品国产亚洲av麻豆| 97无码人妻福利免费公开在线视频 | 一本久久综合亚洲鲁鲁五月天| 日韩亚洲人成网站| 免费va人成视频网站全| 一级毛片不卡片免费观看| 亚洲精品美女久久777777| baoyu122.永久免费视频| 亚洲AV永久无码精品| 最近免费视频中文字幕大全| 亚洲国产成人久久99精品| 一级大黄美女免费播放| 亚洲中文字幕在线乱码| 91人人区免费区人人| 亚洲色无码专区一区| 亚洲AV伊人久久青青草原 | 久久久久亚洲av无码专区 | 精品一区二区三区免费视频| 亚洲成AV人在线观看天堂无码| 亚洲欧美黑人猛交群| 国产特级淫片免费看| 中文字幕无线码免费人妻| 久久精品国产亚洲AV无码麻豆| 在线免费观看污网站| 中文字幕乱码免费看电影| 亚洲免费在线观看视频| 免费中文字幕在线| 国产午夜免费高清久久影院| 青青草原亚洲视频| 中文字幕免费在线看线人 | 大片免费观看92在线视频线视频| 亚洲国产精品无码专区在线观看| 四虎成年永久免费网站| 一区二区免费国产在线观看|