題目1: ajax 是什么桦沉?有什么作用役纹?
Ajax是 Asynchronous JavaScript and XML 的縮寫偶摔,這一技術能夠向服務器請求額外的數(shù)據(jù)而無需刷新整個頁面,會帶來良好的用戶體驗。
傳統(tǒng)的HTTP請求流程大概是這樣的:
(1)瀏覽器向服務器發(fā)送請求
(2)服務器根據(jù)瀏覽器傳來數(shù)據(jù)生成response
(3) 服務器把response返回給瀏覽器
(4) 瀏覽器刷新整個頁面顯示最新數(shù)據(jù)
這個過程是同步的促脉, 順序執(zhí)行
AJAX 在瀏覽器與Web服務器之間使用異步數(shù)據(jù)傳輸(HTTP請求)從服務器獲取數(shù)據(jù)
這里的異步是指脫離當前瀏覽器頁面的請求辰斋,加載等單獨執(zhí)行,這意味著可以在
不重新加載整個頁面的情況下瘸味,通過JavaScript發(fā)送請求宫仗,接受服務器傳來的數(shù)據(jù),
然后操作DOM將新數(shù)據(jù)對網(wǎng)頁的某部分進行更新硫戈,使用Ajax最直觀的感受是向服務器獲取新數(shù)據(jù)不需要刷新頁面等待了
題目2: 前后端開發(fā)聯(lián)調(diào)需要注意哪些事情锰什?后端接口完成前如何 mock 數(shù)據(jù)?
前后端開發(fā)聯(lián)調(diào)需要注意事項:
(1) 約定數(shù)據(jù): 有哪些需要傳輸?shù)臄?shù)據(jù)丁逝,數(shù)據(jù)類型是什么;
(2) 約定接口: 確定接口名稱及請求和響應的格式汁胆,請求的參數(shù)名稱,響應的數(shù)據(jù)格式;
(3) 根據(jù)這些約定整理成接口文檔
后端接口完成前mock數(shù)據(jù):
(1) 可以根據(jù)接口文檔,使用假數(shù)據(jù)來驗證我們制作的頁面響應和接口是否正常霜幼。
(2)可以搭建php本地服務器用,php 寫腳本提供臨時數(shù)據(jù);
(3)也可以使用Mock-server, 它能攔截ajax請求并根據(jù)請求中的內(nèi)容來隨機生成符合你要求的假數(shù)據(jù)嫩码,模擬后端環(huán)境讓你完成對頁面和接口的測試。
題目3:點擊按鈕罪既,使用 ajax 獲取數(shù)據(jù)铸题,如何在數(shù)據(jù)到來之前防止重復點擊?
用狀態(tài)鎖
舉偽代碼說明
var isLoading = false; // 狀態(tài)鎖铡恕, 用于判斷是否在加載數(shù)據(jù)
btn.addEventListener('click', function {
if(isLoading) {
return // 如果正在請求數(shù)據(jù),那么這次點擊什么都不做
}
ajax('/loadMore',{
idx: curIndex,
len: len
}, function(data) {
appendData(data);
isLoading = false; // 數(shù)據(jù)到來之后丢间,解開鎖
curIndex = curIndex + len;
console.log(curIndex);
})
isLoading = true; // 發(fā)送請求之前做個標記加鎖
})