JavaScript原生封裝ajax請(qǐng)求和Jquery中的ajax請(qǐng)求窿克,內(nèi)附詳細(xì)案例和注釋骏庸!

  • 前言:ajax的神奇之處在于JavaScript 可在不重載頁(yè)面的情況與 Web 服務(wù)器交換數(shù)據(jù),即在不需要刷新頁(yè)面的情況下年叮,就可以產(chǎn)生局部刷新的效果具被。Ajax 在瀏覽器與 Web 服務(wù)器之間使用異步數(shù)據(jù)傳輸(HTTP 請(qǐng)求),當(dāng)然也可同步只损,這樣就可使網(wǎng)頁(yè)從服務(wù)器請(qǐng)求少量的信息一姿,而不是整個(gè)頁(yè)面。Ajax使我們的項(xiàng)目更小跃惫、更快叮叹,更友好,在前端開發(fā)有很高的地位爆存,也是面試題的熱點(diǎn)蛉顽。
  • 注:本次測(cè)試是在localhost本地環(huán)境。

1先较、原生ajax

  • html前端代碼get請(qǐng)求方式
        var xhr = new XMLHttpRequest()   //創(chuàng)建一個(gè)ajax實(shí)例xhr
        xhr.open("GET","js/text.js",true)     //這里傳入三個(gè)參數(shù)蜂林,第一個(gè)是請(qǐng)求方式(一般為get和post)遥诉,第二個(gè)參數(shù)是請(qǐng)求地址,第三個(gè)布爾值噪叙,true代表異步矮锈,false代表同步
        xhr.send()                                      //發(fā)送數(shù)據(jù)(get用不上,get發(fā)送的數(shù)據(jù)一般在鏈接后面睁蕾,形式為鍵值對(duì))
        xhr.onreadystatechange = function(){      //綁定監(jiān)聽函數(shù)
            if(xhr.readyState === 4&& xhr.status === 200){   //判斷返回狀態(tài)碼
                var data = xhr.responseText    //請(qǐng)求返回的數(shù)據(jù)
                var datas = JSON.parse(data)    //因?yàn)閿?shù)據(jù)傳過來(lái)是字符串苞笨,這里把它變成對(duì)象
                console.log(datas)   //輸出對(duì)象
            }
        }
        
  • 控制臺(tái)輸出


    image
  • html前端代碼post請(qǐng)求方式
        var xhr = new XMLHttpRequest()   //創(chuàng)建一個(gè)ajax實(shí)例xhr
        xhr.open("POST","js/text.js",true)     //方式變?yōu)镻OST
        xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded"); //設(shè)置頭部信息,放在open方法下面
        xhr.send()                                      //發(fā)送數(shù)據(jù)如果發(fā)送數(shù)據(jù)子眶,可以寫在這里面
        xhr.onreadystatechange = function(){      //綁定監(jiān)聽函數(shù)
            if(xhr.readyState === 4&& xhr.status === 200){   //判斷返回狀態(tài)碼
                var data = xhr.responseText    //請(qǐng)求返回的數(shù)據(jù)
                var datas = JSON.parse(data)    //因?yàn)閿?shù)據(jù)傳過來(lái)是字符串瀑凝,這里把它變成對(duì)象
                console.log(datas)   //輸出對(duì)象
            }
        }
  • 控制臺(tái)輸出


    image
  • 被請(qǐng)求js代碼

{
    "name":"小明",
    "age":24,
    "array":[1,51,3,4,4,6,64]
}

2、函數(shù)封裝

  • 前端JS代碼
            function Ajax(type, url, data, success){
           
            var xhr = null;   // 初始化xhr
            if(window.XMLHttpRequest){    //兼容IE
                xhr = new XMLHttpRequest();
            } else {
                xhr = new ActiveXObject('Microsoft.XMLHTTP')
            }
         
            var type = type.toUpperCase();
           
            var random = Math.random(); //創(chuàng)建隨機(jī)數(shù)
         
            if(type == 'GET'){
                if(data){
                    xhr.open('GET', url + '?' + data, true);  //如果有數(shù)據(jù)就拼接
                } else {
                    xhr.open('GET', url + '?t=' + random, true);  //如果沒有數(shù)據(jù)就隨便
                }
                xhr.send();
         
            } else if(type == 'POST'){
                xhr.open('POST', url, true);
                xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
                xhr.send(data);
            }
         
            
            xhr.onreadystatechange = function(){     // 創(chuàng)建監(jiān)聽函數(shù)
                if(xhr.readyState == 4&&xhr.status == 200){
                        success(xhr.responseText);
                    } 
                }
        }
         
        Ajax('get', 'js/text.js', "", function(data){   //調(diào)用函數(shù)
            console.log(JSON.parse(data));
        });
  • 被請(qǐng)求js代碼

{
    "name":"小明",
    "age":24,
    "array":[1,51,3,4,4,6,64]
}
  • 控制臺(tái)輸出


    image

3臭杰、Jquery中的Ajax(先引入Jquery)

  • 前端簡(jiǎn)單的JS代碼
$.ajax({
            url:"./js/text.js",    //請(qǐng)求地址
            type:"GET",       //請(qǐng)求方式
            dataType:"json",   //請(qǐng)求數(shù)據(jù)類型
            success:function(data){   //成功調(diào)用方法
                console.log(data)
            },
            error:function(res){    //失敗調(diào)用方法
                console.log("請(qǐng)求失斣吝洹!")
            }
        })
  • 被請(qǐng)求js代碼

{
    "name":"小明",
    "age":24,
    "array":[1,51,3,4,4,6,64]
}
  • 控制臺(tái)輸出
image
  • 如有不對(duì)之處渴杆,請(qǐng)大家多多指正寥枝,謝謝!
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末磁奖,一起剝皮案震驚了整個(gè)濱河市囊拜,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌比搭,老刑警劉巖冠跷,帶你破解...
    沈念sama閱讀 221,198評(píng)論 6 514
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異身诺,居然都是意外死亡蜜托,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,334評(píng)論 3 398
  • 文/潘曉璐 我一進(jìn)店門霉赡,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)橄务,“玉大人,你說(shuō)我怎么就攤上這事同廉。” “怎么了柑司?”我有些...
    開封第一講書人閱讀 167,643評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵迫肖,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我攒驰,道長(zhǎng)蟆湖,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,495評(píng)論 1 296
  • 正文 為了忘掉前任玻粪,我火速辦了婚禮隅津,結(jié)果婚禮上诬垂,老公的妹妹穿的比我還像新娘。我一直安慰自己伦仍,他們只是感情好结窘,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,502評(píng)論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著充蓝,像睡著了一般隧枫。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上谓苟,一...
    開封第一講書人閱讀 52,156評(píng)論 1 308
  • 那天官脓,我揣著相機(jī)與錄音,去河邊找鬼涝焙。 笑死卑笨,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的仑撞。 我是一名探鬼主播赤兴,決...
    沈念sama閱讀 40,743評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼派草!你這毒婦竟也來(lái)了搀缠?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,659評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤近迁,失蹤者是張志新(化名)和其女友劉穎艺普,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體鉴竭,經(jīng)...
    沈念sama閱讀 46,200評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡歧譬,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,282評(píng)論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了搏存。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片瑰步。...
    茶點(diǎn)故事閱讀 40,424評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖璧眠,靈堂內(nèi)的尸體忽然破棺而出缩焦,到底是詐尸還是另有隱情,我是刑警寧澤责静,帶...
    沈念sama閱讀 36,107評(píng)論 5 349
  • 正文 年R本政府宣布袁滥,位于F島的核電站,受9級(jí)特大地震影響灾螃,放射性物質(zhì)發(fā)生泄漏题翻。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,789評(píng)論 3 333
  • 文/蒙蒙 一腰鬼、第九天 我趴在偏房一處隱蔽的房頂上張望嵌赠。 院中可真熱鬧塑荒,春花似錦、人聲如沸姜挺。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,264評(píng)論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)初家。三九已至偎窘,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間溜在,已是汗流浹背陌知。 一陣腳步聲響...
    開封第一講書人閱讀 33,390評(píng)論 1 271
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留掖肋,地道東北人仆葡。 一個(gè)月前我還...
    沈念sama閱讀 48,798評(píng)論 3 376
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像志笼,于是被迫代替她去往敵國(guó)和親沿盅。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,435評(píng)論 2 359

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

  • Git 基礎(chǔ) 基本原理 客戶端并不是只提取最新版本的文件快照纫溃,而是把代碼倉(cāng)庫(kù)完整的鏡像下來(lái)腰涧。這樣一來(lái),任何一處協(xié)同...
    __silhouette閱讀 15,899評(píng)論 5 147
  • Git 命令行學(xué)習(xí)筆記 Git 基礎(chǔ) 基本原理 客戶端并不是只提取最新版本的文件快照紊浩,而是把代碼倉(cāng)庫(kù)完整的鏡像下來(lái)...
    sunnyghx閱讀 3,926評(píng)論 0 11
  • Git是目前最流行的版本管理系統(tǒng)窖铡,也是最先進(jìn)的分布式版本控制系統(tǒng)(distributed version cont...
    pro648閱讀 5,711評(píng)論 1 17
  • 文/婁可彤 都哪里去了 那些開在南山的摯愛 深秋,有人在尋找你 走進(jìn)五顏六色的花海 觀賞新穎的造型 人為的琳瑯滿目...
    婁可彤閱讀 254評(píng)論 0 0
  • 奧運(yùn)會(huì)終于開幕坊谁,很多人起床看開幕式就是要確定:里約奧運(yùn)能夠如期開始费彼。一度被吐槽似“里約大冒險(xiǎn)”、準(zhǔn)備工作“史上最差...
    三好辣媽閱讀 357評(píng)論 2 2