Ajax實踐

ajax是什么剥懒?有什么作用渔欢?

  • AJAX代表異步JavaScript和XML猛拴,簡而言之稳衬,它是使用XMLHttpRequest對象與服務(wù)器端腳本進行通信霞捡,它可以發(fā)送以及接收各種格式的信息。
  • AJAX的兩個主要功能允許執(zhí)行以下操作:
    1. 向服務(wù)器發(fā)出請求薄疚,而不重新加載頁面
    2. 接收和處理服務(wù)器中的數(shù)據(jù)

前后端開發(fā)聯(lián)調(diào)需要注意哪些事情碧信?后端接口完成前如何mock數(shù)據(jù)?

  • 注意事項
    • 約定頁面接口參數(shù)
    • 約定頁面數(shù)據(jù)格式
    • 約定請求參數(shù)
    • 約定需要數(shù)據(jù)類型
  • 后端可以通過XMAPP或者server-mock來模擬mock數(shù)據(jù)

點擊按鈕,使用 ajax 獲取數(shù)據(jù)输涕,如何在數(shù)據(jù)到來之前防止重復(fù)點擊?

  • 在提交數(shù)據(jù)后音婶,直到獲取數(shù)據(jù)的這段時間內(nèi)慨畸,設(shè)置按鈕的屬性不可用
  • 設(shè)置狀態(tài)鎖
var lock = false;
  document.querySelector('#btn').addEventListener('click', function() {
        if (lock) return;
        ...
        var xhr = new XMLHttpRequest();
        xhr.open('get', '/getMusic?name=' + musicName, true);
        xhr.send();
        xhr.onreadystatechange = function() {
            if (xhr.readyState === 4 && xhr.status === 200) {
                document.querySelector('#container').innerHTML = xhr.responseText;
                lock = false;
                console.log(lock);
            }
        }
        lock = true;
    })

封裝一個 ajax 函數(shù)莱坎,能通過如下方式調(diào)用。后端在本地使用server-mock來 mock 數(shù)據(jù)

function ajax(opts) {
        var xhr;
        if (window.XMLHttpRequest) {
            xhr = new XMLHttpRequest();
        } else {
            xhr = new ActiveXObject('Microsoft.XMLHTTP');
        }
        xhr.onreadystatechange = function() {
            if (xhr.readyState === 4 && xhr.status === 200) {
                var json = JSON.parse(xhr.responseText);
                opts.success(json);
            }
            if (xhr.status === 404) {
                opts.error();
            }
        }
        var data = '';
        for (var key in opts.data) {
            data += key + '=' + opts.data[key] + '&';
        }
        data = data.substr(0, data.length - 1);
        if (opts.type.toLowerCase() === 'get') {
            xhr.open(opts.type, opts.url + '?' + data, true);
            xhr.send();
        }
        if (opts.type.toLowerCase() === 'post') {
            xhr.open(opts.type, opts.url, true);
            xhr.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
            xhr.send(data);
        }

    }

實現(xiàn)加載更多的功能寸士,后端在本地使用server-mock來模擬數(shù)據(jù)

 var lock = false;
    var curIndex = 2;
    $('#btn').addEventListener('click', function() {
        if (lock) return;
        ajax({
            url: '/loadMore',
            type: 'get',
            data: {
                curIndex: curIndex,
                len: 5
            },
            success: function(data) {
                appendData(data);
                curIndex += 4;
                lock = false;
            },
            error: function() {
                console.log('錯誤')
            }
        })
        lock = true;
    })

    // ajax封裝
    function ajax(opts) {
        var xhr;
        if (window.XMLHttpRequest) {
            xhr = new XMLHttpRequest();
        } else {
            xhr = new ActiveXObject('Microsoft.XMLHTTP');
        }
        xhr.onreadystatechange = function() {
            if (xhr.readyState === 4 && xhr.status === 200) {
                var json = JSON.parse(xhr.responseText);
                opts.success(json);
            }
            if (xhr.status === 404) {
                opts.error();
            }
        }
        var data = '';
        for (var key in opts.data) {
            data += key + '=' + opts.data[key] + '&';
        }
        data = data.substr(0, data.length - 1);
        if (opts.type.toLowerCase() === 'get') {
            xhr.open(opts.type, opts.url + '?' + data, true);
            xhr.send();
        }
        if (opts.type.toLowerCase() === 'post') {
            xhr.open(opts.type, opts.url, true);
            xhr.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
            xhr.send(data);
        }

    }

//渲染數(shù)據(jù)
 function appendData(data) {
        for (var i = 0; i < data.length; i++) {
            var li = document.createElement('li');
            li.innerHTML = data[i];
            $('#doc-list-content').append(li);
        }
    }

function $(id) {
        return document.querySelector(id);
    }
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末檐什,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子弱卡,更是在濱河造成了極大的恐慌乃正,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,546評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件婶博,死亡現(xiàn)場離奇詭異瓮具,居然都是意外死亡,警方通過查閱死者的電腦和手機凡人,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,224評論 3 395
  • 文/潘曉璐 我一進店門名党,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人挠轴,你說我怎么就攤上這事传睹。” “怎么了岸晦?”我有些...
    開封第一講書人閱讀 164,911評論 0 354
  • 文/不壞的土叔 我叫張陵欧啤,是天一觀的道長。 經(jīng)常有香客問我启上,道長邢隧,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,737評論 1 294
  • 正文 為了忘掉前任冈在,我火速辦了婚禮倒慧,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己迫靖,他們只是感情好院峡,可當(dāng)我...
    茶點故事閱讀 67,753評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般蝉揍。 火紅的嫁衣襯著肌膚如雪恭取。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,598評論 1 305
  • 那天俩垃,我揣著相機與錄音,去河邊找鬼汰寓。 笑死口柳,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的有滑。 我是一名探鬼主播跃闹,決...
    沈念sama閱讀 40,338評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼毛好!你這毒婦竟也來了望艺?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,249評論 0 276
  • 序言:老撾萬榮一對情侶失蹤肌访,失蹤者是張志新(化名)和其女友劉穎找默,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體吼驶,經(jīng)...
    沈念sama閱讀 45,696評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡惩激,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,888評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了蟹演。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片风钻。...
    茶點故事閱讀 40,013評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖轨帜,靈堂內(nèi)的尸體忽然破棺而出魄咕,到底是詐尸還是另有隱情,我是刑警寧澤蚌父,帶...
    沈念sama閱讀 35,731評論 5 346
  • 正文 年R本政府宣布哮兰,位于F島的核電站,受9級特大地震影響苟弛,放射性物質(zhì)發(fā)生泄漏喝滞。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,348評論 3 330
  • 文/蒙蒙 一膏秫、第九天 我趴在偏房一處隱蔽的房頂上張望右遭。 院中可真熱鬧,春花似錦、人聲如沸窘哈。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,929評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽滚婉。三九已至图筹,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間让腹,已是汗流浹背远剩。 一陣腳步聲響...
    開封第一講書人閱讀 33,048評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留骇窍,地道東北人瓜晤。 一個月前我還...
    沈念sama閱讀 48,203評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像腹纳,于是被迫代替她去往敵國和親痢掠。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,960評論 2 355

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

  • 題目1: ajax 是什么只估?有什么作用志群?AJAX即“Asynchronous Javascript And XML...
    饑人谷_桶飯閱讀 297評論 0 0
  • ajax 是什么?有什么作用蛔钙? AJAX的全稱是Asynchronous JavaScript and XML(異...
    jamesXiao_閱讀 252評論 0 0
  • 1. ajax 是什么?有什么作用荠医? AJAX是對Asynchronous JavaScript and XML的...
    Rising_suns閱讀 256評論 0 0
  • 1吁脱、ajax是什么,有什么用彬向? AJAX是異步的JavaScript和XML兼贡,作用主要是利用js的XMLHttpR...
    七_五閱讀 156評論 0 0
  • ajax 是什么?有什么作用娃胆? 含義:AJAX = Asynchronous JavaScript and XML...
    邵志遠閱讀 172評論 0 0