最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

原生js仿jquery實(shí)現(xiàn)對(duì)Ajax的封裝

 更新時(shí)間:2016年10月04日 11:12:43   作者:邢澤川  
大家都知道jquery在我們?nèi)粘i_發(fā)中的使用頻率非常高,但jquery說到底還是對(duì)js的封裝,我們不能光會(huì)使用,只有知道了其中的遠(yuǎn)離才能更好的使用,所以這篇文章主要介紹的是原生js仿jquery實(shí)現(xiàn)對(duì)Ajax封裝的方法。

前言

與js相比,jquery為我們省去了冗長的獲取元素的代碼,不用考慮一些麻煩的兼容問題,更加方便的動(dòng)畫實(shí)現(xiàn),以及更加方便的方法調(diào)用讓我們覺得jquery真是越用越舒服。但是jquery說到底還是對(duì)js的封裝,我們不光要用的舒服還要深入理解其中的原理,這樣才能更好的使用它。

首先我們封裝的函數(shù)為了能實(shí)現(xiàn)可傳入無限多個(gè)參數(shù),在使用我們即將封裝的函數(shù)時(shí),需要使用對(duì)象進(jìn)行傳參,形式如下:

//data作為參數(shù)傳入我們下面封裝的函數(shù)
var data = {
       //數(shù)據(jù)
       user:"yonghu1",
       pass:'12345',
       age:18,
       //回調(diào)函數(shù)
       success:function (data){
        alert(data);
       }
      }

函數(shù)封裝:

1、封裝一個(gè)輔助函數(shù),把傳進(jìn)來的對(duì)象拼接成url的字符串

function toData(obj){
  if (obj == null){
    return obj;
  }
  var arr = [];
  for (var i in obj){
    var str = i+"="+obj[i];
    arr.push(str);
  }
  return arr.join("&");
}

2、封裝Ajax

function ajax(obj){
  //指定提交方式的默認(rèn)值
  obj.type = obj.type || "get";
  //設(shè)置是否異步,默認(rèn)為true(異步)
  obj.async = obj.async || true;
  //設(shè)置數(shù)據(jù)的默認(rèn)值
  obj.data = obj.data || null;
  if (window.XMLHttpRequest){
    //非ie
    var ajax = new XMLHttpRequest();
  }else{
    //ie
    var ajax = new ActiveXObject("Microsoft.XMLHTTP");
  }
  //區(qū)分get和post
  if (obj.type == "post"){
    ajax.open(obj.type,obj.url,obj.async);
    ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    var data = toData(obj.data);
    ajax.send(data);
  }else{
    //get test.php?xx=xx&aa=xx
    var url = obj.url+"?"+toData(obj.data);
    ajax.open(obj.type,url,obj.async);
    ajax.send();
  }

  ajax.onreadystatechange = function (){
    if (ajax.readyState == 4){
        if (ajax.status>=200&&ajax.status<300 || ajax.status==304){
          if (obj.success){
            obj.success(ajax.responseText);
          }
        }else{
          if (obj.error){
            obj.error(ajax.status);
          }
        }
      }
   }  
}

總結(jié)

以上就是原生js仿jquery實(shí)現(xiàn)對(duì)Ajax封裝的全部內(nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來一定的幫助,如果有疑問大家可以留言交流。

相關(guān)文章

  • javascript 瀏覽器檢測代碼精簡版

    javascript 瀏覽器檢測代碼精簡版

    javascript檢測瀏覽器精簡版,需要的朋友可以參考下。
    2010-03-03
  • D3.js進(jìn)階系列之CSV表格文件的讀取詳解

    D3.js進(jìn)階系列之CSV表格文件的讀取詳解

    D3.js支持從外部讀取數(shù)據(jù)進(jìn)行圖形交互(Loading External Resources),支持的格式有CSV、txt、Html、tsv、xml文本文件和JSON XML數(shù)據(jù)結(jié)構(gòu),下面這篇文章主要給大家介紹了D3.js中CSV表格文件讀取的相關(guān)資料,需要的朋友可以參考下。
    2017-06-06
  • JavaScript訪問CSS屬性的幾種方式介紹

    JavaScript訪問CSS屬性的幾種方式介紹

    要通過元素訪問樣式表,那么就應(yīng)該先確定是哪個(gè)元素。直接訪問樣式表在該樣式塊里找相應(yīng)的樣式規(guī)則,最后在該樣式規(guī)則里找相應(yīng)的樣式
    2014-07-07
  • 全面解析JavaScript中的valueOf與toString方法(推薦)

    全面解析JavaScript中的valueOf與toString方法(推薦)

    本文給大家介紹JavaScript中的valueOf與toString方法,valueOf() 方法可返回 Boolean 對(duì)象的原始值,toString() 方法可把一個(gè)邏輯值轉(zhuǎn)換為字符串,并返回結(jié)果。對(duì)js中valueof和tostring相關(guān)知識(shí)感興趣的朋友一起學(xué)習(xí)吧
    2016-06-06
  • JS提交form表單實(shí)例分析

    JS提交form表單實(shí)例分析

    這篇文章主要介紹了JS提交form表單的方法,結(jié)合實(shí)例形式簡單分析了頁面加載時(shí)提交表單及通過鏈接提交表單的實(shí)現(xiàn)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-12-12
  • Javascript 正則表達(dá)式校驗(yàn)數(shù)字的簡單實(shí)例

    Javascript 正則表達(dá)式校驗(yàn)數(shù)字的簡單實(shí)例

    下面小編就為大家?guī)硪黄狫avascript 正則表達(dá)式校驗(yàn)數(shù)字的簡單實(shí)例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-11-11
  • JS將秒換成時(shí)分秒實(shí)現(xiàn)代碼

    JS將秒換成時(shí)分秒實(shí)現(xiàn)代碼

    將秒換成時(shí)分秒的方法有很多,在本文將為大家介紹下,使用js的具體的實(shí)現(xiàn)思路,有需要的朋友可以參考下,希望對(duì)大家有所幫助
    2013-09-09
  • js拖拽功能實(shí)現(xiàn)代碼解析

    js拖拽功能實(shí)現(xiàn)代碼解析

    這篇文章主要為大家詳細(xì)介紹了js實(shí)現(xiàn)拖拽功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-11-11
  • JavaScript中日期函數(shù)的相關(guān)操作知識(shí)

    JavaScript中日期函數(shù)的相關(guān)操作知識(shí)

    日期函數(shù)是我們經(jīng)常用到的知識(shí)點(diǎn),下面通過本文給大家介紹JavaScript中日期函數(shù)的相關(guān)操作知識(shí),非常不錯(cuò),感興趣的朋友一起學(xué)習(xí)吧
    2016-08-08
  • 跟我學(xué)習(xí)javascript的var預(yù)解析與函數(shù)聲明提升

    跟我學(xué)習(xí)javascript的var預(yù)解析與函數(shù)聲明提升

    跟我學(xué)習(xí)javascript的var預(yù)解析與函數(shù)聲明提升,小編對(duì)var預(yù)解析與函數(shù)聲明提升知識(shí)點(diǎn)也不甚了解,和大家一起學(xué)習(xí)本篇文章。
    2015-11-11

最新評(píng)論

县级市| 吉水县| 二手房| 康定县| 噶尔县| 涡阳县| 武汉市| 河津市| 白玉县| 柞水县| 河东区| 滦平县| 天水市| 读书| 阿城市| 渝中区| 澄江县| 榆树市| 连云港市| 绥德县| 西盟| 葵青区| 吉林省| 交城县| 怀化市| 金阳县| 南召县| 元谋县| 秀山| 太保市| 澜沧| 全州县| 佛冈县| 德保县| 黄浦区| 观塘区| 莒南县| 全南县| 宽城| 明溪县| 江达县|