ajax實踐

題目1:

ajax 是什么?有什么作用?

含義:腳本發起HTTP通信

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

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

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

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

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

題目2:

前后端開發聯調需要注意哪些事情?

(1),發生方式 :是get還是post,后端用同樣的方式接收發送過來的數據
(2),統一接口
(3),前端發送什么數據格式給后端

后端接口完成前如何 mock 數據?

使用server-mock模擬前后端數據傳輸

//后端router.js文件

app.get(function(req,res){})

統一好接口和發生方式,后端router.js獲取前端發生過來的數據保存到req里面

var date1=req.query.xx

查詢到變量xx的數據復制給date1,date1就是我們獲取到的前端發生過來的xx的數據
獲取到前端發送全部數據后,進行某些操作
如:

if(date1===1){
//返回數據到客戶端
send(2);
}

前端通過ajax的 var arriDate=XMLHttpResqust.responseText
arriDate就保存著后端返回的數據

題目3:

點擊按鈕,使用 ajax 獲取數據,如何在數據到來之前防止重復點擊?

添加一個狀態鎖,記住當前上次數據是否成功響應,如果沒有成功響應,return空

        var dateArrive=true;
        //監聽按鈕單擊狀態
        Obtn.addEventListener("click",function(){
            
            if(!dateArrive){
                return;
            }
            //調用ajax函數
            loadDate(function(news){
            render(news);
            pageindex=pageindex+5;
            //還原狀態,不鎖定
            dateArrive=true;
            });
            //鎖定狀態
            dateArrive=false;
        })

題目4:

封裝一個 ajax 函數,能通過如下方式調用。后端在本地使用server-mock來 mock 數據

index.html文件

    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="utf-8" />
            <title></title>
            <style>
                div{
                    text-align: center;
                }
                #btn{
                    padding: 6px 10px;
                    margin-top: 20px;
                }
                #btn:hover{
                    background: darkcyan;
                }
            </style>
        </head>
        <body>
            <div>
                <button id="btn" href="javascript:void(0);">登錄</button>
            </div>
            <script>
                var Obtn=document.querySelector("#btn");
                
                function loadDate(render){
                    var obj={
                        url: '/login',   //接口地址
                        type: 'get',               // 類型, post 或者 get,
                        datas: {
                            username: 'xiaoming',
                            passw: 'abcd1234'
                        },
                        success: render,
                        onerror: function(){
                           console.log('出錯了')
                        }
                    }
                    ajax(obj);
                }
                
                function render(ret){
                    console.log(ret,"歡迎您"); 
                }
                //ajax請求響應數據
                function ajax(obj){
                    var xhr=new XMLHttpRequest();
                    var str=obj.url+'?';
                    for (key in obj.datas) {
                        str+=key+'='+obj.datas[key]+'&';
                    }
                    str=str.substr(0,str.length-1);
                    xhr.open(obj.type,str,true);
                    xhr.onreadystatechange=function(){
                        if(xhr.readyState===4){
                            if(xhr.status===200||xhr.status===304){
                            var result=xhr.responseText;
                            obj.success(result);
                        }else{
                           obj.onerror;
                        }
                        }
                      
                    }
                    xhr.send();
                }
                
                //監聽按鈕單擊狀態
                Obtn.addEventListener("click",function(){
                    
                    //調用ajax函數
                    loadDate(function(news){
                    render(news);
                    });
                })
            </script>
        </body>
    </html>

router.js文件

    app.get('/login',function(req,res){
        var username=req.query.username;
        var passw=req.query.passw;
        var dates;
        
        if(username==='xiaoming'&&passw==='abcd1234') {
            dates="xiaoming";
        }else{
            dates="用戶名或密碼不正確...";
        }
        res.send(dates);
    })

數據mock成功

圖片.png

題目5:

實現加載更多的功能,效果范例81,后端在本地使用server-mock來模擬數據

操作展示
代碼

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,156評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,401評論 3 415
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,069評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,873評論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,635評論 6 408
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,128評論 1 323
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,203評論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,365評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,881評論 1 334
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,733評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,935評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,475評論 5 358
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,172評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,582評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,821評論 1 282
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,595評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,908評論 2 372

推薦閱讀更多精彩內容