任務二十四~ajax

問答部分

一、ajax 是什么?有什么作用?

  • ajax(Asynchronous Javascript and XML)~指的是異步的Javascripot和XML,是一種無須刷新整個頁面就能為頁面中某一部分加載數據的技術
  • 作用~通過在后臺與服務器進行少量數據交換,可以使網頁實現異步更新;這意味著在不重新加載網頁的情況下,對網頁的某些部分進行更新,會帶來更好的用戶體驗

二、前后端開發聯調需要注意哪些事情?后端接口完成前如何 mock 數據?(npm install -g server-mock)

  • 聯調注意事項:
    • 要約定好接口,確認接口名稱、接口的參數及返回值
    • 要約定好數據,確認數據的傳輸類型
  • Mock數據:
    • 根據之前定的接口文檔,利用假數據來驗證我們所寫的頁面
    • 本地安裝XAMPP本地搭建web服務器,編寫php來mock數據
    • 使用server-mock進行mock數據

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

  • 通過給ajax設置狀態鎖,如下代碼:
var locked =false;//設置狀態鎖
document.getElementById("btn").addEventListener("click",function(){
    if(locked){    //locked為false執行ajax
            return;
        }
    locked = true;//上鎖
    ajax({
        ···
        locked = false;//解鎖
        }
    })
});

代碼部分

一、封裝一個 ajax 函數,能通過如下方式調用

function ajax(opts){
    // todo ...
}
document.querySelector('#btn').addEventListener('click', function(){
    ajax({
        url: 'getData.php',   //接口地址
        type: 'get',               // 類型, post 或者 get,
        data: {
            username: 'xiaoming',
            password: 'abcd1234'
        },
        success: function(ret){
            console.log(ret);       // {status: 0}
        },
        error: function(){
            console.log('出錯了')
        }
    })
});

所封裝的ajax函數如下:

    function ajax(opts){
            var xhr = new XMLHttpRequest(); 
            xhr.onreadystatechange = function(){
                if(xhr.readyState === 4 && xhr.status === 200){
                    var json = JSON.parse(xhr.responseText);
                    opts.success(json);
                }
                if(xhr.readyState === 4 && xhr.status === 404){
                    opts.error();
                }
            }
            var dataStr="";
            for (var key in opts.data){
                dataStr += key + "=" + opts.data[key] + "&";
            }
            dataStr = dataStr.substr(0, dataStr.length-1);
            if (opts.type.toLowerCase() === "get"){
                xhr.open(opts.type,opts.url + "?" + dataStr,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(dataStr);
            }
        }

二、實現如下加載更多的功能!

  • 演示如下動圖所示:
    加載更多
  • 代碼2

三、實現注冊表單驗證功能!

  • 演示如下動圖所示:
    表單驗證功能
  • 代碼3
    版權聲明:本教程版權歸鄧攀和饑人谷所有,轉載須說明來源!!!!
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容