<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                [toc] # 題1、什么是 AJAX?干什么用的? 答:AJAX(Asynchronous JavaScript And XML) 翻譯過來: 異步的 JavaScript 和 XML。 用途:JavaScript 這門語言用來和其他計算機進行數據通信的技術。 俗稱:調用服務器接口用的。 # 題2、JS 如何實現 AJAX? 答:至少三種方法:1. 使用 JS 原生的 AJAX 技術 2. 使用 jQuery 中封裝好的 $.ajax 技術 3. 使用基 Promise 的 axios 包,這個包的好處是已經將AJAX都封裝成的 Promise 對象 # 題3、使用 JS 實現原生 AJAX 的流程? 答: 流程: 1. 創建 `XMLHttpRequest` 對象(`瀏覽器` 中有一個 XMLHttpRequest 對象,使用它來執行 AJAX 的) 2. 配置這個對象:提交地址、回調函數等 3. 發送請求 4. 根據請求的狀態來執行不同的操作 代碼演示:JS 執行原生 AJAX ~~~ // 1. 創建 XMLHttpRequest 對象 const xhr = new XMLHttpRequest() // 2. 設置回調函數,用來監聽 AJAX 的狀態變化 xhr.onreadystatechange = function() { // 2.1. 根據不同的狀態做不同的處理 // 判斷是否連接服務器成功并且服務器返回狀態碼為 200 if(xhr.readyState == 4 && xhr.status == 200) { // 2.2. 打印返回值 console.log( xhr.responseText ) } } // 3. 設置請求方式及請求地址 xhr.open('GET', 'http://xxxxx') // 4. 發送請求 xhr.send() ~~~ # 題4、如何將原生的 AJAX 封裝成 Promise 對象來使用?流程是什么? 答:首先創建一個函數,在函數中創建一個 Promise 對象并返回,在 Promise 對象中放一個回調函數,這個回調函數上有兩個參數,第一個參數是在成功時調用設置返回的信息,第二個參數是在失敗時調用設置失敗信息。將異步代碼放到這個回調函數中,然后判斷如果異步代碼執行成功就調用 Promise 的第一個參數的函數來設置返回值,如果異步失敗就調用第二個參數的函數來設置失敗信息。 ~~~ // 封裝一個發送 get 請求的函數 // 參數:請求地址 // 返回:Promise 對象 const xhr = new XMLHttpRequest() function get(url) { // 參數一、ok:函數,成功時設置返回值 // 參數二、err:函數,失敗時設置失敗的信息 return new Promise(function(ok, err){ xhr.onreadystatechange = function() { if(xhr.readyState == 4 && xhr.status == 200) { ok(xhr.responseText) } else { err("連接失敗") } } xhr.open('GET', url) xhr.send() }) } // 用法一、ES6 get('http://xxxxxx').then(res=>{ console.log( res.data ) }) // 用法二、ES8 async function getData() { let {data} = await get('http://xxxxxx') console.log(data) } getData() ~~~ # 題5、什么是 AJAX 跨域?怎么解決? 答:出于安全的考慮,瀏覽器會限制 AJAX 不允許跨域請求服務器。 什么情況是跨域? 情況一、端口號不同 : http://localhost:9000 和 http://localhost:8000 情況二、域名不同 :http://www.badiu.com 和 http://www.jd.com 解決辦法有 3 種: 1. jsonp 優點:沒有瀏覽器的限制(低端的 IE 也支持) 缺點:只能發送 GET 請求 2. CORS(跨站資源共享) 優點:由后端完成,前端完全不用改代碼,支持各種請求(GET、POST、PUT、DELETE等) 缺點:低端IE不支持 3. 服務器代理 優點:沒有任何限制 缺點:需要再寫個代理服務器的程序
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看