輕鬆理解JavaScript之AJAX

来源:http://www.cnblogs.com/rongmm/archive/2017/03/15/6552898.html
-Advertisement-
Play Games

AJAX技術是網頁構建的必備技能之一,本文希望能幫助大家輕鬆的學習這項技術 ...


摘要

AJAX技術是網頁構建的必備技能之一,本文希望能幫助大家輕鬆的學習這項技術

一、什麼是ajax?

ajax(非同步javascript xml) 能夠刷新局部網頁數據而不是重新載入整個網頁。

二、如何使用ajax?

第一步:創建xmlhttprequest對象

創建xmlhttprequest對象,XMLHttpRequest對象用來和伺服器交換數據。

var xmlhttp =new XMLHttpRequest();

第二步:註冊回調函數

onreadystatechange函數,當伺服器響應請求並返回數據後,我們想要客戶端處理這些數據就需要使用onreadystatechange函數,每次xmlhttprequest對象的readyState發生改變都會觸發onreadystatechange函數。對於readyState會在下一章節詳細介紹。

  xmlHttp.onreadystatechange= callback;
   function callback(){}

第三步:配置和發送請求

使用xmlhttprequest對象的open()和send()方法配置和發送資源請求給伺服器。
xmlhttp.open(method,url,async) method包括get 和post,url主要是文件或資源的路徑,async參數為true(代表非同步)或者false(代表同步)
xmlhttp.send();使用get方法發送請求到伺服器。
xmlhttp.send(string);使用post方法發送請求到伺服器。
post表單數據需要使用xmlhttprequest對象的setRequestHeader方法增加一個HTTP頭。

post 發送請求什麼時候能夠使用呢?
(1)更新一個文件或者資料庫的時候。
(2)發送大量數據到伺服器,因為post請求沒有字元限制。
(3)發送用戶輸入的加密數據。

xhttp.open("POST", "ajax_test.aspx", true);
xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhttp.send("fname=Henry&lname=Ford");

第四步:處理響應數據

使用xmlhttprequest對象的responseText或responseXML屬性獲得伺服器的響應。
使用responseText屬性得到伺服器響應的字元串數據,使用responseXML屬性得到伺服器響應的XML數據。
在回調函數中使用readyState==4和status==200判斷交互是否結束,響應是否正確,並根據需要獲取伺服器端返回的數據,更新頁面內容。

function callback(){
    if(xmlHttp.readyState == 4){
      //判斷交互是否成功
      if(xmlHttp.status == 200){
        //獲取伺服器返回的數據
        //獲取純文本數據
        var responseText =xmlHttp.responseText;
       document.getElementById("info").innerHTML = responseText;
      }
   }
}

三、AJAX運行過程中5種狀態(readyState)

在AJAX實際運行當中,對於訪問XMLHttpRequest(XHR)時並不是一次完成的,而是分別經歷了多種狀態後取得的結果,對於這種狀態在AJAX中共有5種,這五種狀態是由AJAX引擎切換設置的,分別是。
0 : 定義了XHR,但還未初始化
1 :調用send()方法,正在發送請求,請求發送完畢後,開始等待接收響應
2 :響應接收完成
3 :正在解析響應內容
4 :響應內容解析完成,返回給客戶端調用
對於上面的狀態,其中“0”狀態是在定義後自動具有的狀態值,而對於成功訪問的狀態(得到信息)我們大多數採用“4”進行判斷。
值得註意的是,狀態每切換一次,都會觸發onreadystatechange 事件,所以整個過程onreadystatechange 事件被觸發5次

四、AJAX的優缺點

優點

1、最大的一點是頁面無刷新,在頁面內與伺服器通信,不需要打斷用戶的操作,具有更加迅速的響應能力給用戶的體驗非常好。
2、減輕伺服器的負擔,ajax的原則是“按需取數據”,可以最大程度的減少冗餘請求,和響應對伺服器造成的負擔。

缺點

1、ajax幹掉了back按鈕,即對瀏覽器後退機制的破壞。
2、對搜索引擎的支持比較弱。

更多前端技術文章,歡迎前往我的個人博客:嶸麽麽的個人博客


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 序言 清風萬里的季節,周末本該和親人朋友一起消遣這爛漫的花花草草,或是懶洋洋的曬個太陽聽聽風聲鳥鳴。無奈工作使然,理想使然,我回到啦公司,敲起啦鍵盤,擼起啦代碼,程式狗的世界一片黯然,一片黯然,願天下所有努力的程式狗都夢想成真吧!! 回到正題,為什麼搭建rabbitmq集群?rabbitmq集群有那 ...
  • 一、為什麼需要線程模型? 記得幾年前,自己寫高精度演算法時,因為需要一個線程安全的後臺(用來保存一些信息),便手動寫了一個線程本地存儲(TLS)(雖然,後來因為改了計算模型,棄用了);再後來,因為記憶體池的需要,亦手動再寫了一個線程本地存儲(TLS);很好,這樣一來同一個庫里,竟然有兩套相同的TLS;於 ...
  • 微服務要求 服務協作 服務治理 服務治理 1 懷疑第三方 堅持一條信念:“所有第三方服務都不可靠”,不管第三方什麼天花亂墜的承諾。基於這樣的信念,我們需要有以下行動。 1.1 有兜底,制定好業務降級方案 如果第三方服務掛掉怎麼辦?我們業務也跟著掛掉?顯然這不是我們希望看到的結果,如... ...
  • 本文地址 點擊關註微信公眾號 wenyuqinghuai 分享提綱: 1. 概述 2. UML類圖 3. UML時序圖 4. 參考資料 分享提綱: 1. 概述 2. UML類圖 3. UML時序圖 4. 參考資料 1.概述 1.1)百度百科: 又稱統一建模語言或標準建模語言,是始於1997年一個OM ...
  • 隨筆記錄,以供以後參考 1.生成CSR和Key。IIS里也可以生成。生成網址:http://tools.globalsign.cn/#/generator-csr CSR就是Certificate Secure Request證書請求文件。要證明網站是可信的,數據傳輸是加密的,就需要由CA機構頒發證 ...
  • 我們經常利用按鈕進行一些頁面值的處理工作,但是預設的邏輯造成,每次新填報的值,需要點擊下空白區域或是執行某個其他操作才可以被正確讀取,那麼我們如何處理呢? ...
  • 寫在前面 Md2site是基於 "Omi" 的一款Markdown轉網站工具,使用簡單,生成的文件輕巧,功能強大。 官網: "http://alloyteam.github.io/omi/md2site/" Github: "https://github.com/AlloyTeam/omi/tree ...
  • 在使用 ueditor 開發時, 作為一個web文本編輯器使用時。 當點擊上傳圖片時, 文件夾要延遲好久才能打開。 解決: 針對多圖片上傳, 將/ueditor/dialogs/image/image.js 文件下的以下代碼 改為 針對單圖片上傳, 將/ueditor/ueditor.all.js ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...