進(jìn)階12 ajax

題目1: ajax 是什么?有什么作用?

AJAX不是JavaScript的規(guī)范,它只是一個(gè)哥們“發(fā)明”的縮寫:Asynchronous JavaScript and XML,意思就是用JavaScript執(zhí)行異步網(wǎng)絡(luò)請(qǐng)求。
如果仔細(xì)觀察一個(gè)Form的提交,你就會(huì)發(fā)現(xiàn),一旦用戶點(diǎn)擊“Submit”按鈕,表單開始提交,瀏覽器就會(huì)刷新頁面,然后在新頁面里告訴你操作是成功了還是失敗了。如果不幸由于網(wǎng)絡(luò)太慢或者其他原因,就會(huì)得到一個(gè)404頁面。
這就是Web的運(yùn)作原理:一次HTTP請(qǐng)求對(duì)應(yīng)一個(gè)頁面。
如果要讓用戶留在當(dāng)前頁面中,同時(shí)發(fā)出新的HTTP請(qǐng)求,就必須用JavaScript發(fā)送這個(gè)新請(qǐng)求,接收到數(shù)據(jù)后,再用JavaScript更新頁面,這樣一來,用戶就感覺自己仍然停留在當(dāng)前頁面,但是數(shù)據(jù)卻可以不斷地更新。
最早大規(guī)模使用AJAX的就是Gmail,Gmail的頁面在首次加載后,剩下的所有數(shù)據(jù)都依賴于AJAX來更新。
用JavaScript寫一個(gè)完整的AJAX代碼并不復(fù)雜,但是需要注意:AJAX請(qǐng)求是異步執(zhí)行的,也就是說,要通過回調(diào)函數(shù)獲得響應(yīng)。


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

前后端聯(lián)調(diào)需要:
約定接口類型(get/post)和名稱
約定前端發(fā)送數(shù)據(jù)的類型及格式
約定后端響應(yīng)返回的數(shù)據(jù)類型及格式
mock數(shù)據(jù):使用server mock搭建本地服務(wù)器,用router.js文件模擬網(wǎng)站后端

題目3:點(diǎn)擊按鈕,使用 ajax 獲取數(shù)據(jù),如何在數(shù)據(jù)到來之前防止重復(fù)點(diǎn)擊?

在按鈕點(diǎn)擊下至獲取到數(shù)據(jù)之前這段時(shí)間,屏蔽掉按鍵所綁定的時(shí)間,使之在這一段時(shí)間之內(nèi)的點(diǎn)擊是無效的即可,以下是代碼:

var dataArrive = true;   
btn.addEventListener('click', function () {
    if(!dataArrive)     
        return;
    var xhr = new XMLHttpRequest();
    xhr.onreadystatechange = function () {
        if(xhr.readyState === 4){
            if(xhr.status === 200 || xhr.status === 304){
                //...
            }
            else
                console.log('出錯(cuò)了,請(qǐng)稍后再試');
            isArrive = true; 
        }
    };
    xhr.open('get', '/load', true);
    xhr.send();
    isArrive = false; 
});

題目4:實(shí)現(xiàn)加載更多的功能

loadMore.html
router.js

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容