ajax

1.ajax是什么?有什么用?

ajax:Asynchronous Javascript +XML,作用是向服務器請求數(shù)據(jù)而不用刷新頁面
優(yōu)點:

  1. 它能在不刷新整個頁面的前提下與服務器通信維護數(shù)據(jù),更新數(shù)據(jù)而不需要刷新頁面
  2. 因為可以選擇異步通信,它與服務器使用異步的方式通信,不會打斷用戶的操作(卡死頁面)
  3. 可以將后端服務器的一些工作轉(zhuǎn)移給客戶端,利用客戶端限制的能力來處理,減輕了服務器的負擔。

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

前后端開發(fā)聯(lián)調(diào)注意事項:

  1. 約定數(shù)據(jù):需要傳輸哪些數(shù)據(jù),數(shù)據(jù)類型是什么
  2. 約定接口:確定接口名稱,請求格式以及響應格式
  3. 根據(jù)這些約定整理成接口文檔

mock數(shù)據(jù):

  1. 可以根據(jù)接口文檔,使用假數(shù)據(jù)來驗證我們制作的頁面響應和接口是否正常
  2. 可以用xampp進行模擬
  3. 也可以使用server-mock

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

設置一個狀態(tài)鎖

 var newsBox = document.querySelector("#news-box")
  var btn = document.querySelector("#btn")
  var newsIndex = 0
  var canIclick = true

  btn.addEventListener("click",function(){
    if(!canIclick){
        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)
            var fragment = document.createDocumentFragment()
            for(var i = 0; i < results.length; i++){
                var node = document.createElement("li")
                node.innerText = results[i]
                fragment.appendChild(node)
            }
            newsBox.appendChild(fragment)
            newsIndex += 5  
        }else{
            alert('出錯了')
        }
        canIclick = true
      }
    }
    xhr.open('get','/getMore?index='+newsIndex+'&length=5',true)
    xhr.send()
    canIclick = false
  })

4.實現(xiàn)加載更多的功能,后端在本地使用sever-mock模擬數(shù)據(jù)

在3中貼出了前端的代碼,一下是后端的代碼

router.get('/getMore', function(req,res){

    var curIndex = req.query.index
    var len = req.query.length
    var data = []

    for(var i = 0; i < len; i++){
        data.push('新聞'+(parseInt(curIndex) + i))
    }
    setTimeout(function(){
        res.send(data);
    },3000)  //此處的setTimeout是模擬網(wǎng)速很慢時,服務器傳回數(shù)據(jù)較慢時的場景,驗證防止多次點擊是否生效
})
ajax.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內(nèi)容

  • 瀏覽器與服務器之間,采用HTTP協(xié)議通信。用戶在瀏覽器地址欄鍵入一個網(wǎng)址,或者通過網(wǎng)頁表單向服務器提交內(nèi)容,這時瀏...
    徐國軍_plus閱讀 382評論 0 4
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 134,993評論 19 139
  • AJAX 原生js操作ajax 1.創(chuàng)建XMLHttpRequest對象 var xhr = new XMLHtt...
    碧玉含香閱讀 3,288評論 0 7
  • 1- 關(guān)于 ajax 及其作用 Ajax是Asynchronous JavaScript and XML的縮寫。...
    osborne閱讀 548評論 0 0
  • 不知不覺中假期過了大半,昨天才和孩子做所謂的假期作業(yè)。 一、作業(yè)篇 雖然我知道老師留的作業(yè)只是形式,還有一些學校印...
    就是有點文藝范兒閱讀 271評論 5 11