ajax

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

含義:腳本發(fā)起HTTP通信

作用:傳輸數(shù)據(jù)到服務(wù)器,監(jiān)聽狀態(tài)碼實(shí)現(xiàn)服務(wù)器返回結(jié)果,在整個(gè)網(wǎng)頁中,數(shù)據(jù)的發(fā)送響應(yīng)過程中不會影響網(wǎng)頁其他位置的操作,這個(gè)過程實(shí)現(xiàn)了異步操作,節(jié)省用戶表單驗(yàn)證時(shí)間,提高用戶體驗(yàn)。
優(yōu)點(diǎn):
(1)無刷新更新數(shù)據(jù)。
AJAX最大優(yōu)點(diǎn)就是能在不刷新整個(gè)頁面的前提下與服務(wù)器通信維護(hù)數(shù)據(jù)。這使得Web應(yīng)用程序更為迅捷地響應(yīng)用戶交互,并避免了在網(wǎng)絡(luò)上發(fā)送那些沒有改變的信息,減少用戶等待時(shí)間,帶來非常好的用戶體驗(yàn)。

(2)異步與服務(wù)器通信。
AJAX使用異步方式與服務(wù)器通信,不需要打斷用戶的操作,具有更加迅速的響應(yīng)能力。優(yōu)化了Browser和Server之間的溝通,減少不必要的數(shù)據(jù)傳輸、時(shí)間及降低網(wǎng)絡(luò)上數(shù)據(jù)流量。

(3)前端和后端負(fù)載平衡。
AJAX可以把以前一些服務(wù)器負(fù)擔(dān)的工作轉(zhuǎn)嫁到客戶端,利用客戶端閑置的能力來處理,減輕服務(wù)器和帶寬的負(fù)擔(dān),節(jié)約空間和寬帶租用成本。并且減輕服務(wù)器的負(fù)擔(dān),AJAX的原則是“按需取數(shù)據(jù)”,可以最大程度的減少冗余請求和響應(yīng)對服務(wù)器造成的負(fù)擔(dān),提升站點(diǎn)性能。

(4)基于標(biāo)準(zhǔn)被廣泛支持。
AJAX基于標(biāo)準(zhǔn)化的并被廣泛支持的技術(shù),不需要下載瀏覽器插件或者小程序,但需要客戶允許JavaScript在瀏覽器上執(zhí)行。隨著Ajax的成熟,一些簡化Ajax使用方法的程序庫也相繼問世。同樣,也出現(xiàn)了另一種輔助程序設(shè)計(jì)的技術(shù),為那些不支持JavaScript的用戶提供替代功能。

(5)界面與應(yīng)用分離。
Ajax使WEB中的界面與應(yīng)用分離(也可以說是數(shù)據(jù)與呈現(xiàn)分離),有利于分工合作、減少非技術(shù)人員對頁面的修改造成的WEB應(yīng)用程序錯(cuò)誤、提高效率、也更加適用于現(xiàn)在的發(fā)布系統(tǒng)。

缺點(diǎn):

(1)瀏覽器歷史記錄的遺失: 在使用AJAX對頁面進(jìn)行改變后,由于并沒有刷新頁面,沒有改變頁面的訪問歷史,當(dāng)用戶想要回到上一個(gè)狀態(tài)時(shí),無法使用瀏覽器提供的后退。

(2)AJAX的安全問題: AJAX的出現(xiàn)就像建立起了一直通服務(wù)器的另一條通道,容易遭受到一些攻擊。

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

1.約定數(shù)據(jù):約定好頁面需要的數(shù)據(jù)和數(shù)據(jù)類型
2. 約定接口:
(1)約定接口的名稱。
(2)約定請求的參數(shù)。
(3)約定響應(yīng)的的格式,比如:成功后返回什么數(shù)據(jù),響應(yīng)失敗返回什么內(nèi)容。
3.將約定好的東西整理成接口文檔和規(guī)范
mock數(shù)據(jù):參照接口相關(guān)文檔,使用假數(shù)據(jù)來驗(yàn)證我們制作的頁面響應(yīng)和接口是否正常??梢源罱╬hp本地服務(wù)器用,php寫腳本提供臨時(shí)數(shù)據(jù);
也可寫js腳本模擬數(shù)據(jù),利用server-Mock完成對頁面和接口的測試。

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

var isLoading = false;//狀態(tài)變量:用于在數(shù)據(jù)到來之前防止重復(fù)點(diǎn)擊
btnNode.addEventListener('click', function() {
    if(isLoading) return;//正在加載則終止
    var text = textNode.value;
    var xhr = new XMLHttpRequest();
    xhr.open('get', '/test?text=' + text, true);
    xhr.send();
    xhr.onreadystatechange = function(){
        if (xhr.readyState === 4 && xhr.status === 200) {
            var content = xhr.responseText;
            console.log(content);
            contentNode.innerText = content;
            isLoading = false;//加載成功則重置狀態(tài)變量
        }
    }
    isLoading = true;//加載開始時(shí)改變狀態(tài)變量的值
});

題目4:實(shí)現(xiàn)加載更多的功能,效果范例372,后端在本地使用server-mock來模擬數(shù)據(jù)

http://js.jirengu.com/yorayawoyi/2/edit

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

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

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