1. <nobr id="easjo"><address id="easjo"></address></nobr>

      <track id="easjo"><source id="easjo"></source></track>
      1. 
        

      2. <bdo id="easjo"><optgroup id="easjo"></optgroup></bdo>
      3. <track id="easjo"><source id="easjo"><em id="easjo"></em></source></track><option id="easjo"><span id="easjo"><em id="easjo"></em></span></option>
          貴州做網站公司
          貴州做網站公司~專業!靠譜!
          10年網站模板開發經驗,熟悉國內外開源網站程序,包括DEDECMS,WordPress,ZBlog,Discuz! 等網站程序,可為您提供網站建設,網站克隆,仿站,網頁設計,網站制作,網站推廣優化等服務。我們專注高端營銷型網站,企業官網,集團官網,自適應網站,手機網站,網絡營銷,網站優化,網站服務器環境搭建以及托管運維等。為客戶提供一站式網站解決方案?。?!

          【融職培訓】Web前端學習 第6章 jQuery Ajax 2 Ajax入門

          來源:互聯網轉載 時間:2024-01-29 08:08:58

          一、Ajax概述

          在我們之前學習的內容中,向服務器發送請求后,再瀏覽器中響應的頁面都是整頁刷新。

          在某些項目中,我們只希望獲取頁面的局部數據,而不必整頁刷新,這個時候就需要使用Ajax來實現功能了。

          Ajax 的全稱是Asynchronous JavaScript and XML(異步的JavaScript 和 XML)。這個概念出現的比較早,那個時候前端和后臺的數據交互主要以XML格式為主,例如下面的數據格式:

          1 <fruit>2    <name>apple</name>3    <weight>0.5kg</weight>4    <color>red</color>5 </fruit>

          現在仍然存在很多用xml交互數據的情況,但是目前主流的數據格式使用的是json(JavaScript對象表示法),例如下面的格式:

          1 {2     "fruit":{3         "name":"apple",4         "weight":"0.5kg",5         "color":"red"6     }7 }

          對于熟悉js的開發人員,這樣的格式再熟悉不過了,基本是零學習成本,以后我們使用Ajax傳遞數據都是使用json格式。

          ajax的優缺點

          • 優點:按需獲取數據,提升系統性能。
          • 缺點:異步獲取數據,不利于搜索引擎優化。

          二、Ajax原理

          考慮一個問題,在之前的學習內容中,我們是如何向服務器發送請求的?這里我們列舉一下:

          1. 在瀏覽器中直接輸入網址
          2. a標簽實現的頁面跳轉
          3. 表單提交
          4. Postman模擬http請求

          Ajax的原理是通過XMLhttpRequest對象向服務器發送請求,實例代碼如下所示:

           1 //后臺程序 2 router.get("/", async ctx => { 3     await ctx.render("index") 4 }) 5 router.get("/data", async ctx => { 6     ctx.body = "hello world" 7 }) 8  9 //前端程序10 var xhr = new XMLHttpRequest(); //創建XHR對象11 xhr.open("get","/data");   //規定請求類型12 xhr.send()                      //發送請求13 xhr.onreadystatechange = function(){ //監聽readyState事件14 // 0: 請求未初始化15 // 1: 服務器連接已建立16 // 2: 請求已接收17 // 3: 請求處理中18 // 4: 請求已完成,且響應已就緒19   if(xhr.readyState === 4 && xhr.status === 200){20       alert(xhr.responseText)21   }22 }

          這里需要注意的是,上面的代碼,我們在實際開發項目中并不常用,因為通常情況下,我們會引入第三方Ajax庫來處理異步請求。

          三、封裝一個Ajax方法

          回調函數

          將上面的程序封裝到一個myAjax方法,實例代碼如下所示,這里需要注意的是,因為Ajax是異步的操作,因此封裝的Ajax不能用return獲取返回值。下面的示例使用的是回調函數封裝的Ajax方法

           1 function myAjax(method,url,next) { 2    let xhr = new XMLHttpRequest(); 3    xhr.open(method, url); 4    xhr.send() 5    xhr.onreadystatechange = function () { 6        if (xhr.readyState === 4 && xhr.status === 200) { 7            next(xhr.responseText); 8        } 9    }10 }11 12 document.querySelector("button").onclick = function() {//調用封裝的Ajax13   myajax("get","/data",function(data){14       alert(data);15   });16 }

          Promise

          過多的使用回調函數會讓程序變得很難維護,接下來我們用Promise重新封裝ajax方法,示例代碼如下所示:

           1 function myajax(method, url, next) { 2    return new Promise(function (resolve,reject) { 3        let xhr = new XMLHttpRequest(); 4        xhr.open(method, url); 5        xhr.send(); //可以向后臺傳輸數據 6        xhr.onreadystatechange = function () { 7            if (xhr.readyState === 4 && xhr.status === 200) { 8                resolve(xhr.responseText); 9            }10        }11        reject("獲取數據失敗")12    })13 }14 document.querySelector("button").onclick = async function () {15    let p = myajax("get", "data");16    p.then(function (data) {17        alert(data);18    })19 }

          使用async函數才是處理異步問題的終極解決方案,所以在后續的開發中,盡量使async函數來處理異步問題。

          四、課后練習

          獨立完成封裝XMLHttpRequest對象,并獲取后臺的字符串數據。

          標簽:ajax培訓-

          網絡推廣與網站優化公司(網絡優化與推廣專家)作為數字營銷領域的核心服務提供方,其價值在于通過技術手段與策略規劃幫助企業提升線上曝光度、用戶轉化率及品牌影響力。這...

          在當今數字化時代,公司網站已成為企業展示形象、傳遞信息和開展業務的重要平臺。然而,對于許多公司來說,網站建設的價格是一個關鍵考量因素。本文將圍繞“公司網站建設價...

          在當今的數字化時代,企業網站已成為企業展示形象、吸引客戶和開展業務的重要平臺。然而,對于許多中小企業來說,高昂的網站建設費用可能會成為其發展的瓶頸。幸運的是,隨...

          360修復后藍屏怎么辦?1如果您下載了軟件、補丁、插件、驅動程序等。藍屏之前,可以先卸載;如果驅動不合適,可以下載驅動向導升級驅動。2.如果電腦有木馬,可以下載Win清理助手、金山衛士、360急救箱查殺木馬。3.如果藍屏關機不是經常發生,重啟電腦試試;如果它仍然沒有 t工作,請按下F8,直到高級選項出現,放開,并選擇 "最后正確的配置 "并進入修復。4.如果它不 如果無效,請嘗試還原系統或重新安裝...

          北京到麗江有高鐵嗎?目前北京沒有直達麗江的高鐵。不僅沒有直達云南麗江的高鐵,也沒有直達列車。如果一定要坐高鐵從北京到麗江,只能坐高鐵從北京到云南昆明。到達昆明后,換乘D字頭雙層旅游列車,從昆明可以直達麗江。北京到麗江自駕游最佳路線攻略?走京石高速岳各莊大橋、京昆高速、石太高速、太舊高速、太元高速、大云高速、運城、Xi安高速、侯鈺高速、西玉高速、潼關高速、戶縣高速、西漢高速、赫爾高速。走108國道到...

          內存2133和3600玩游戲差距大嗎?游戲,差距很小。這個差距需要根據你平時如何使用電腦,再看內存顆粒的好壞,然后需要考慮其他配件的影響??偟膩碚f,同樣的內存粒子,內存大概可以這樣分層,2133以下是低檔,3200以下是中檔,3200以上是高檔。如果你是游戲玩家,2133-3600之間的內存對大部分游戲影響不大,最大相差2%。只有少數會達到6%-8%的差距。如果你是辦公室黨,內存頻率的影響幾乎可以...

          TOP
          国产初高中生视频在线观看|亚洲一区中文|久久亚洲欧美国产精品|黄色网站入口免费进人
          1. <nobr id="easjo"><address id="easjo"></address></nobr>

              <track id="easjo"><source id="easjo"></source></track>
              1. 
                

              2. <bdo id="easjo"><optgroup id="easjo"></optgroup></bdo>
              3. <track id="easjo"><source id="easjo"><em id="easjo"></em></source></track><option id="easjo"><span id="easjo"><em id="easjo"></em></span></option>