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

前言

眾所周知桐罕,jquery在我們?nèi)粘i_發(fā)中的使用頻率非常高缩麸,與js相比,我們省去了冗長(zhǎng)的獲取元素的代碼缀遍,不用考慮一些麻煩的兼容問題慕匠,更加方便的動(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);
                    }
                }
            }
      } 
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末漆腌,一起剝皮案震驚了整個(gè)濱河市贼邓,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌闷尿,老刑警劉巖塑径,帶你破解...
    沈念sama閱讀 212,718評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異填具,居然都是意外死亡统舀,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,683評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門劳景,熙熙樓的掌柜王于貴愁眉苦臉地迎上來绑咱,“玉大人,你說我怎么就攤上這事枢泰∶枞冢” “怎么了?”我有些...
    開封第一講書人閱讀 158,207評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵衡蚂,是天一觀的道長(zhǎng)窿克。 經(jīng)常有香客問我骏庸,道長(zhǎng),這世上最難降的妖魔是什么年叮? 我笑而不...
    開封第一講書人閱讀 56,755評(píng)論 1 284
  • 正文 為了忘掉前任具被,我火速辦了婚禮,結(jié)果婚禮上只损,老公的妹妹穿的比我還像新娘一姿。我一直安慰自己,他們只是感情好跃惫,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,862評(píng)論 6 386
  • 文/花漫 我一把揭開白布叮叹。 她就那樣靜靜地躺著,像睡著了一般爆存。 火紅的嫁衣襯著肌膚如雪蛉顽。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 50,050評(píng)論 1 291
  • 那天先较,我揣著相機(jī)與錄音携冤,去河邊找鬼。 笑死闲勺,一個(gè)胖子當(dāng)著我的面吹牛曾棕,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播菜循,決...
    沈念sama閱讀 39,136評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼睁蕾,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了债朵?” 一聲冷哼從身側(cè)響起子眶,我...
    開封第一講書人閱讀 37,882評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎序芦,沒想到半個(gè)月后臭杰,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,330評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡谚中,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,651評(píng)論 2 327
  • 正文 我和宋清朗相戀三年渴杆,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片宪塔。...
    茶點(diǎn)故事閱讀 38,789評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡磁奖,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出某筐,到底是詐尸還是另有隱情比搭,我是刑警寧澤,帶...
    沈念sama閱讀 34,477評(píng)論 4 333
  • 正文 年R本政府宣布南誊,位于F島的核電站身诺,受9級(jí)特大地震影響蜜托,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜霉赡,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,135評(píng)論 3 317
  • 文/蒙蒙 一橄务、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧穴亏,春花似錦蜂挪、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,864評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至蟆湖,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間玻粪,已是汗流浹背隅津。 一陣腳步聲響...
    開封第一講書人閱讀 32,099評(píng)論 1 267
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留劲室,地道東北人伦仍。 一個(gè)月前我還...
    沈念sama閱讀 46,598評(píng)論 2 362
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像很洋,于是被迫代替她去往敵國(guó)和親充蓝。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,697評(píng)論 2 351

推薦閱讀更多精彩內(nèi)容