Ajax

  1. 是對(duì)現(xiàn)有技術(shù)的綜合利用(xhtml+css;dom動(dòng)態(tài)的顯示和交互;xml和json進(jìn)行數(shù)據(jù)交換戴甩;XMLHttpRequest進(jìn)行異步數(shù)據(jù)查詢)
  2. 本質(zhì):在HTTP協(xié)議的基礎(chǔ)上嗦哆,以異步的方式谤祖,通過(guò)XMLHttpRequest對(duì)象與服務(wù)器進(jìn)行通信。
  3. 作用:實(shí)現(xiàn)頁(yè)面數(shù)據(jù)的局部刷新老速。
image

異步:
定義:某段程序的執(zhí)行不阻塞其他程序的執(zhí)行粥喜,程序的執(zhí)行順序不依賴于程序本身的書(shū)寫(xiě)順序。
優(yōu)勢(shì):不阻塞其他程序的執(zhí)行橘券,從而提升整體執(zhí)行效率额湘。
劣勢(shì):如果存在多個(gè)異步程序,無(wú)法判斷它們的執(zhí)行先后順序旁舰。

  • 使用異步對(duì)象發(fā)送get請(qǐng)求
        document.querySelector("#username").onblur = function(){
            // 1.獲取用戶數(shù)據(jù)
            var name = this.value;

            // 2锋华,讓異步對(duì)象發(fā)送請(qǐng)求
            // 2.1 創(chuàng)建異步對(duì)象
            var xhr = new XMLHttpRequest();
            // 2.2 設(shè)置 請(qǐng)求行 open(請(qǐng)求方式,請(qǐng)求url):
                // get請(qǐng)求如果有參數(shù)就需要在url后面拼接參數(shù)箭窜,
                // post如果有參數(shù)毯焕,就在請(qǐng)求體中傳遞
            xhr.open("get","validate.php?username="+name);
            // 2.3 設(shè)置 請(qǐng)求頭 setRequestHeader('key':'value')
                // get方式不需要設(shè)置請(qǐng)求頭
                // post需要設(shè)置 Content-Type:application/x-www-form-urlencoded
            // 2.4 設(shè)置 請(qǐng)求體:發(fā)送請(qǐng)求  send(參數(shù):key=value&key=value)
                // 如果有參數(shù),post應(yīng)該在這個(gè)位置來(lái)傳遞參數(shù)
                // 對(duì)于 get請(qǐng)求不需要在這個(gè)位置來(lái)傳遞參數(shù)
            xhr.send(null);

            // 響應(yīng)報(bào)文:
            // 報(bào)文行:響應(yīng)狀態(tài)碼 響應(yīng)狀態(tài)信息  200 ok
            // 報(bào)文頭:服務(wù)器返回給客戶端的一些額外信息  
            // 報(bào)文體:服務(wù)器返回給客戶端的數(shù)據(jù) responseText:普通字符串  responseXML:符合x(chóng)ml格式的字符串
            // xhr.status:可以獲取當(dāng)前服務(wù)器的響應(yīng)狀態(tài)  200 》成功
            console.log(xhr.status);
            // 一個(gè)真正成功的響應(yīng)應(yīng)該兩個(gè)方面:1.服務(wù)器成功響應(yīng)  2.數(shù)據(jù)已經(jīng)回到客戶端并且可以使用了
            // 監(jiān)聽(tīng)異步對(duì)象的響應(yīng)狀態(tài) readystate
            // 0:創(chuàng)建了異步對(duì)象磺樱,但是還沒(méi)有真正的去發(fā)送請(qǐng)求
            // 1.調(diào)用了send方法纳猫,正在發(fā)送請(qǐng)求
            // 2.send方法執(zhí)行完畢了,已經(jīng)收到服務(wù)器的響應(yīng)內(nèi)容--原始內(nèi)容坊罢,還不可以使用
            // 3.正在解析數(shù)據(jù)
            // 4.響應(yīng)內(nèi)容解析完畢续担,可以使用了
            xhr.onreadystatechange = function(){
                if(xhr.status == 200 && xhr.readyState == 4){
                    console.log(xhr.responseText);
                    console.log("-----------");
                    document.querySelector(".showmsg").innerHTML = xhr.responseText;;
                }
            }
        };

  • 使用異步對(duì)象發(fā)送post請(qǐng)求
        document.querySelector("#username").onblur = function(){
            // 1.獲取用戶數(shù)據(jù)
            var name = this.value;
            // 2\. 讓異步對(duì)象發(fā)送post請(qǐng)求
            // 2.1 創(chuàng)建異步對(duì)象
            var xhr = new XMLHttpRequest();
            // 2.2 設(shè)置請(qǐng)求行 open(請(qǐng)求方式擅耽,請(qǐng)求url)
                // 1.get 需要在url后面拼接參數(shù)(如果有參數(shù))
                // 2.post請(qǐng)求不需要拼接參數(shù)
            xhr.open("post","validate.php");
            // 2.3 設(shè)置請(qǐng)求頭:setRequestHeader()
                // 1.get不需要設(shè)置
                // 2.post需要設(shè)置請(qǐng)求頭:Content-Type:application/x-www-form-urlencoded
            xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
            // .如果沒(méi)有設(shè)置活孩,參數(shù)無(wú)法正確的傳遞到服務(wù)器(本質(zhì)上說(shuō),如果沒(méi)有參數(shù)乖仇,也不一定需要設(shè)置憾儒,不會(huì)影響請(qǐng)求的發(fā)送)
            // 2.4 設(shè)置請(qǐng)求體 send()
                // 1.get的參數(shù)在url拼接了,所以不需要在這個(gè)函數(shù)中設(shè)置
                // 2.post的參數(shù)在這個(gè)函數(shù)中設(shè)置(如果有參數(shù))
            xhr.send("username="+name);

            // 3.讓異步對(duì)象接收服務(wù)器的響應(yīng)數(shù)據(jù)
            // 一個(gè)成功的響應(yīng)有兩個(gè)條件:1.服務(wù)器成功響應(yīng)了  2.異步對(duì)象的響應(yīng)狀態(tài)為4(數(shù)據(jù)解析完畢可以使用了)
            // 當(dāng)異步對(duì)象的響應(yīng)狀態(tài)發(fā)生改變的時(shí)候乃沙,會(huì)觸發(fā)一個(gè)事件:onreadystatechange
            xhr.onreadystatechange = function(){
                // 判斷服務(wù)器是否響應(yīng)      判斷異步對(duì)象的響應(yīng)狀態(tài)
                if(xhr.status == 200 && xhr.readyState == 4){
                    document.querySelector(".showmsg").innerHTML = xhr.responseText;
                }
            }
        };

Ajax是對(duì)上述兩種請(qǐng)求的封裝起趾。
jQuery中的Ajax參數(shù)如下。

        $.ajax({
            type: "method", //請(qǐng)求方式 get post
            url: "url", //請(qǐng)求url
            data: "data", //請(qǐng)求需要傳遞的參數(shù)
            dataType: "dataType", //服務(wù)器返回格式
            beforeSend: function (param) {

            }, //請(qǐng)求發(fā)起前調(diào)用
            success: function (response) {

            }, //請(qǐng)求成功之后的回調(diào)
            complete: function (param) {  

            }, //響應(yīng)完成時(shí)調(diào)用(包括成功或失斁濉)
            timeout: 1500 // 請(qǐng)求超時(shí)
        });
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末训裆,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子蜀铲,更是在濱河造成了極大的恐慌边琉,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,376評(píng)論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件记劝,死亡現(xiàn)場(chǎng)離奇詭異变姨,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)厌丑,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,126評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門(mén)定欧,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)渔呵,“玉大人,你說(shuō)我怎么就攤上這事砍鸠±┣猓” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,966評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵爷辱,是天一觀的道長(zhǎng)类茂。 經(jīng)常有香客問(wèn)我,道長(zhǎng)托嚣,這世上最難降的妖魔是什么巩检? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,432評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮示启,結(jié)果婚禮上兢哭,老公的妹妹穿的比我還像新娘。我一直安慰自己夫嗓,他們只是感情好迟螺,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,519評(píng)論 6 385
  • 文/花漫 我一把揭開(kāi)白布惯退。 她就那樣靜靜地躺著竿裂,像睡著了一般。 火紅的嫁衣襯著肌膚如雪链韭。 梳的紋絲不亂的頭發(fā)上排霉,一...
    開(kāi)封第一講書(shū)人閱讀 49,792評(píng)論 1 290
  • 那天窍株,我揣著相機(jī)與錄音,去河邊找鬼攻柠。 笑死球订,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的瑰钮。 我是一名探鬼主播冒滩,決...
    沈念sama閱讀 38,933評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼浪谴!你這毒婦竟也來(lái)了开睡?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,701評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤苟耻,失蹤者是張志新(化名)和其女友劉穎篇恒,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體梁呈,經(jīng)...
    沈念sama閱讀 44,143評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡婚度,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,488評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蝗茁。...
    茶點(diǎn)故事閱讀 38,626評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡醋虏,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出哮翘,到底是詐尸還是另有隱情颈嚼,我是刑警寧澤,帶...
    沈念sama閱讀 34,292評(píng)論 4 329
  • 正文 年R本政府宣布饭寺,位于F島的核電站阻课,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏艰匙。R本人自食惡果不足惜限煞,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,896評(píng)論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望员凝。 院中可真熱鬧署驻,春花似錦、人聲如沸健霹。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,742評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)糖埋。三九已至宣吱,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間瞳别,已是汗流浹背征候。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,977評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留洒试,地道東北人倍奢。 一個(gè)月前我還...
    沈念sama閱讀 46,324評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像垒棋,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子痪宰,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,494評(píng)論 2 348

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