AJAX實踐

1.AJAX是什么?有什么作用?

AJAX是什么:ajax全稱Asynchronous javascript and XML 簡稱異步的javascript 和 XML。AJAX能通過后臺與服務器進行數(shù)據(jù)交換,在不重新加載頁面整個頁面的情況下,更新部分網(wǎng)頁的技術。

作用:當我們向后臺傳輸數(shù)據(jù)或獲取數(shù)據(jù)的時候,我們的網(wǎng)頁不需要不斷重新刷新加載而是異步加載后續(xù)代碼并同時等待當前請求的響應。

優(yōu)點
1、最大的一點是頁面無刷新,用戶的體驗非常好。
2、使用異步方式與服務器通信,具有更加迅速的響應能力。。
3、可以把以前一些服務器負擔的工作轉嫁到客戶端,利用客戶端閑置的能力來處理,減輕服務器和帶寬的負擔,節(jié)約空間和寬帶租用成本。并且減輕服務器的負擔,ajax的原則是“按需取數(shù)據(jù)”,可以最大程度的減少冗余請求,和響應對服務器造成的負擔。
4、基于標準化的并被廣泛支持的技術,不需要下載插件或者小程序。
5、ajax可使因特網(wǎng)應用程序更小、更快,更友好。

缺點

1、ajax不支持瀏覽器back按鈕。
2、安全問題 AJAX暴露了與服務器交互的細節(jié)。

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

  • 約定接口:接口名稱、參數(shù)名稱統(tǒng)一,制定規(guī)范
  • 接口傳什么:數(shù)據(jù)類型以及數(shù)據(jù)大小限制確定
  • 接口相關參數(shù):服務器、端口、方法、請求數(shù)據(jù)的一些限制

使用服務器框架搭建模擬服務器環(huán)境,是用模擬數(shù)據(jù)驗證接口是否正常,可以用node.js來搭建。用server-mock來模擬。

3.點擊按鈕,使用 ajax 獲取數(shù)據(jù),如何在數(shù)據(jù)到來之前防止重復點擊?

var isDataArrive = true;
btn.addEventListener('click',function(){
    if(!isDataArrive){
        return;
    }
    var xhr = new XMLHttpRequest();
    xhr.onreadystatechange = function(){
        if(xhr.readystate ===4){
            if(xhr.status === 200 || xhr.status === 304){   
                //do sth
            }else{
                console.log("出錯了");
            }
            isDataArrive = true; 
        }
    };
    xhr.open('get','/loadMore?index=0''&length=5',true)
    xhr.send()
    isDataArrive = false;
});

4.實踐加載更多的功能,后端在本地使用server-mock來模擬數(shù)據(jù)。

前端代碼:

<script>

var btn = document.querySelector('#load-more');
var ct = document.querySelector('#ct');
var pageIndex = 0;
var isDataArrive = true;
btn.addEventListener('click', function(e){
e.preventDefault();

if(!isDataArrive){
  return;
}

var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function(){
  if(xhr.readyState === 4){
    if( xhr.status === 200 || xhr.status == 304){
      var results = JSON.parse(xhr.responseText);
      console.log(results);
      var fragment = document.createDocumentFragment();
      for(var i = 0; i < results.length; i++){
        var node = document.createElement('li');
        node.innerText = results[i];
        fragment.appendChild(node);
      }
      ct.appendChild(fragment);
      pageIndex = pageIndex + 5 ;
    }else{
    console.log('出錯了');
    }
    isDataArrive = true;
  }
};
xhr.open('get', '/loadMore?index='+pageIndex+'&length=5', true);
xhr.send();
isDataArrive = false;

});
</script>

后端代碼:

app.get('/loadMore', function(req, res) {
  var curIdx = req.query.index
  var len = req.query.length
  var data = []
  for(var i = 0; i < len; i++) {
    data.push('列表' + (parseInt(curIdx) + i))
  }
  setTimeout(function(){
    res.send(data);
  }, 1000)    
});
第一次加載
第二次加載

【個人總結,如有錯漏,歡迎指出】
:>

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

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

  • ajax 是什么?有什么作用? AJAX的全稱是Asynchronous JavaScript and XML(異...
    cross_王閱讀 381評論 0 0
  • 題目1: ajax 是什么?有什么作用? 含義:腳本發(fā)起HTTP通信 作用:傳輸數(shù)據(jù)到服務器,監(jiān)聽狀態(tài)碼實現(xiàn)服務器...
    從前慢pearl閱讀 193評論 0 0
  • 1- 關于 ajax 及其作用 Ajax是Asynchronous JavaScript and XML的縮寫。...
    osborne閱讀 580評論 0 0
  • 題目1: ajax 是什么?有什么作用? ajax是一種技術方案,但并不是一種新技術。它依賴的是現(xiàn)有的CSS/HT...
    蕭雪圣閱讀 332評論 0 0
  • 1.ajax 是什么?有什么作用? Asynchronous JavaScript and XML(異步的 Jav...
    clark124閱讀 290評論 0 0

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