茄子在线看片免费人成视频,午夜福利精品a在线观看,国产高清自产拍在线观看,久久综合久久狠狠综合

    <s id="ddbnn"></s>
  • <sub id="ddbnn"><ol id="ddbnn"></ol></sub>

  • <legend id="ddbnn"></legend><s id="ddbnn"></s>

    Jquery揭秘系列:ajax原生js實現(xiàn)詳解(推薦)
    來源:易賢網(wǎng) 閱讀:1240 次 日期:2016-06-18 11:43:06
    溫馨提示:易賢網(wǎng)小編為您整理了“Jquery揭秘系列:ajax原生js實現(xiàn)詳解(推薦)”,方便廣大網(wǎng)友查閱!

    講到ajax這個東西,我們要知道兩個對象XMLHTTPRequest和ActiveXObject ,提供了對 HTTP 協(xié)議的完全的訪問,包括做出 POST 和 HEAD 請求以及普通的 GET 請求的能力??梢酝交虍惒椒祷?Web 服務器的響應,并且能以文本或者一個 DOM 文檔形式返回內容。XMLHTTPRequest基本上算是標準化了,兼容大部分瀏覽器ActiveXObject這玩兒意兒是微軟的東西,所以是為了兼容IE版本,我們用的只是它的xmlHTTP功能。

    為了功能的明確和清晰,我們把這個ajax代碼分為5個部分:

    •對象的創(chuàng)建 

    •onreadystatechange句柄處理

    •參數(shù)拼接

    •Get功能實現(xiàn)

    •Post功能實現(xiàn)

    1.對象的創(chuàng)建 :

    首先創(chuàng)建用作 XMLHttpRequest 對象的 XMLHttp 變量。把它的值設置為 null。

    按照 web 標準創(chuàng)建對象 (Mozilla, Opera 以及 Safari):XMLHttp=new XMLHttpRequest()

    按照微軟的方式創(chuàng)建對象,在 Internet Explorer 6 及更高的版本可用:XMLHttp=new ActiveXObject("Msxml2.XMLHTTP")

    如果捕獲錯誤,則嘗試更老的方法 (Internet Explorer 5.5) :XMLHttp=new ActiveXObject("Microsoft.XMLHTTP")

    var xhrFactory = function () {

        this.init.apply(this, arguments);

       }

       xhrFactory.prototype = {

        init: function () {

         this.xhr = this.create();

        },

        create: function () {

         var xhr = null;

         try {

          if (window.XMLHttpRequest) {

           xhr = new XMLHttpRequest();

          }

          else if (window.ActiveXObject) {

           xhr = new ActiveXObject("Msxml2.Xmlhttp");

          }

         }

         catch (err) {

          xhr = new ActiveXObject("Microsoft.Xmlhttp");

         }

         return xhr;

        }

    }

    2.onreadystatechange句柄:

    readystate: function (timeout,callback) {

         this.xhr.onreadystatechange = function () {

          if (this.readyState == 4 && this.status == 200) {

           callback(eval("(" + this.responseText + ")"));

          }

          else {

           setTimeout(function () {

            this.xhr.abort();

           }, !timeout ? 15000 : timeout);

          }

           

         }

        }

    這里面要說一下readyState和status屬性。

    readyState:

    1.創(chuàng)建MLHTTP對象   

    2.打開與服務器的連接  

    3.發(fā)送指令   

    4.等待處理請求結果  。

    status:

    200.請求成功   

    400.請求錯誤。。。

    還有很多值 ,這里就不一個個說了。

    timeout參數(shù)是請求過期時間   

    callback參數(shù),回調對返回數(shù)據(jù)做了處理,轉換成對象。

    3.參數(shù)拼接

    para: function (data) {

         var datastr = "";

         if (data && Object.prototype.toString.call(data) == "[object Object]") {

          for (var i in data) {

           for (var i = 0; i < length; i++) {

            datastr += i + "=" + data[i] + "&";

           }

          }

         }

         return datastr;

        }

    這里是將傳入的對象參數(shù)拼接成字符竄,用于ajax請求時發(fā)送參數(shù)。

    4.Get功能實現(xiàn):

    get: function (url, data, callback, async, timeout) {

         this.readystate(timeout, callback);

         var newurl = url;

         var datastr = this.para(data);

         newurl = url + "?" + datastr;

         this.xhr.open("get", newurl, !async ? true : async);

         this.xhr.send(null);

        }

    get 請求,發(fā)送的參數(shù)是直接在url上拼接的,而不是在send里面發(fā)送,而post方式參數(shù)則是在send里面發(fā)送。

    5.Post功能實現(xiàn)

    post: function (url, data, callback, async, timeout) {

         this.readystate(timeout, callback);

         var newurl = url;

         var datastr = this.para(data);

         this.xhr.open("post", newurl, !async ? true : async);

         this.xhr.setRequestHeader("content-type", "x-www-form-urlencoded");

         this.xhr.send(!datastr ? null : datastr);

        }

    post這里面多了一段代碼:this.xhr.setRequestHeader("content-type", "x-www-form-urlencoded");

    這段代碼其實是說明將整個發(fā)送內容作為一個整體進行編碼,get則是單個參數(shù)進行編碼拼接 ,這也是post和get的區(qū)別。

    調用方式如下 :

    var xhr = new xhrFactory();

       xhr.post("test.ashx", null, function (data) {

        alert(data);

       });

    以上這篇Jquery揭秘系列:ajax原生js實現(xiàn)詳解(推薦)就是小編分享給大家的全部內容了,希望能給大家一個參考

    更多信息請查看網(wǎng)絡編程
    易賢網(wǎng)手機網(wǎng)站地址:Jquery揭秘系列:ajax原生js實現(xiàn)詳解(推薦)

    2026上岸·考公考編培訓報班

    • 報班類型
    • 姓名
    • 手機號
    • 驗證碼
    關于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 新媒體/短視頻平臺 | 手機站點 | 投訴建議
    工業(yè)和信息化部備案號:滇ICP備2023014141號-1 云南省教育廳備案號:云教ICP備0901021 滇公網(wǎng)安備53010202001879號 人力資源服務許可證:(云)人服證字(2023)第0102001523號
    聯(lián)系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關注公眾號:hfpxwx
    咨詢QQ:1093837350(9:00—18:00)版權所有:易賢網(wǎng)