国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > AJAX > 正文

原生AJAX封裝的簡單實現

2024-09-01 08:27:52
字體:
來源:轉載
供稿:網友

回歸下原生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,然后返回總和。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 伊春市| 托里县| 织金县| 梅州市| 华蓥市| 柳州市| 全椒县| 华容县| 牙克石市| 辉南县| 侯马市| 利津县| 沂南县| 秦安县| 韶关市| 新泰市| 西吉县| 万安县| 永清县| 梁平县| 共和县| 杭锦旗| 明光市| 铁岭市| 东阿县| 郎溪县| 崇义县| 临邑县| 延寿县| 霍林郭勒市| 囊谦县| 崇左市| 富顺县| 济源市| 福鼎市| 固原市| 金堂县| 高要市| 无棣县| 顺平县| 临夏市|