ajax如何正確的使用?初識ajax時候的使用詳情

來源:互聯網
上載者:User
本篇文章主要的介紹了關於ajax的定義,對於一些剛認識ajax的人來說,這個還是不懂的,所以這篇文章教大家如何正確的理解ajax以及正確的學習ajax。現在就一起來看這篇文章吧

這幾天正在學ASP.NET Ajax,學的有點迷糊,所以決定先學Ajax,再向ASP.NET Ajax過渡,本文將帶大家初識Ajax,從宏觀上看Ajax,再從細節部分學習,文章脈絡如下。

  • Ajax定義

  • Ajax組成

  • XMLHttpRequest

  • 常見Ajax使用

  • Ajax用戶端生命週期

  • 實現原理

  • 一個簡單的執行個體

Ajax定義

Ajax是Asynchronous JavaScript and XML(非同步JavaScript和XML)的縮寫,它不是一種新的程式設計語言,而是一種使用現有標準的新方法。看全稱好像只有JavaScript和XML,其實Ajax並不是只包含JavaScript和XML,Ajax是由JavaScript、XML、CSS、DOM和XMLHttpRequest等組成的。

Ajax組成

除了Json和XMLHttpRequest,其它的以前都學習過,所以簡略介紹一下。

1、HTML/XHTML:用於描述Ajax頁面的初始樣式,即首次載入顯示的頁面。
2、DOM:Document Object Model(檔案物件模型),用來表示XML資料結構。
3、CSS:Cascading Style Sheet(層疊樣式表)達式,用來表示HTML檔案中元素出現的樣式。
4、XML和JSON:XML是標準的資料樣式,無論是伺服器端還是用戶端都可以很好地對其進行解釋,
JSON:JavaScript Object Notation,因為JSON的格式和JavaScript中定義對象的文法一致, 對於同樣的資料,JSON要比XML更簡短,減少了網路流量。
5、伺服器端處理瀏覽器請求:開發人員可以選擇他所熟悉的方式進行伺服器端設計實現。
6、XMLHttpRequest對象:它允許開發人員在javaScript中以非同步方式向伺服器發出HTTP請求並得到響應。
7、JavaScript:通過JavaScript可以將上述元素聯絡在一起,例如通過JavaScript查看修改DOM、CSS等。

XMLHttpRequest對象

XMLHttpRequest對象是AJAX和Web 2.0應用程式的技術基礎,AJAX利用XMLHttpRequest來實現發送和接收HTTP請求與響應資訊。一個經由XMLHttpRequest對象發送的HTTP請求不需要頁面中擁有或回寄一個<form>元素。AJAX中的"A"代表了"非同步",這意味著XMLHttpRequest對象的send()方法可以立即返回,從而讓Web頁面上的其它HTML/JavaScript繼續其瀏覽器端處理而由伺服器處理HTTP請求並發送響應。預設情況下請求是非同步進行的,你也可以選擇發送同步請求,這將會暫停其它Web頁面的處理,直到該頁面接收到伺服器的響應為止,在使用XMLHttpRequest對象發送請求和處理響應之前,必須先用JavaScript建立一個XMLHttpRequest對象。(想看更多就到topic.alibabacloud.comAJAX開發手冊欄目中學習)

XMLHttpRequest屬性

屬 性

描 述

onreadystatechange

每個狀態改變時都會觸發這個事件處理器,通常會調用一個JavaScript函數

readyState

請求的狀態。有5個可取值:0 = 未初始化,1 = 正在載入,2 = 已載入,3 = 互動中,4 = 完成

responseText

伺服器的響應,表示為一個串

responseXML

伺服器的響應,表示為XML。這個對象可以解析為一個DOM對象

status

伺服器的HTTP狀態代碼(200對應OK,404對應Not Found(未找到),等等)

statusText

HTTP狀態代碼的相應文本(OK或Not Found(未找到)等等)

XMLHttpRequest方法

方 法

描 述

abort()

停止當前請求

getAllResponseHeaders()

把HTTP請求的所有響應首部作為鍵/值對返回

getResponseHeader("header")

返回指定首部的串值

open("method", "url")

建立對伺服器的調用。method參數可以是GET、POST或PUT。url參數可以是相對URL或絕對URL。這個方法還包括3個可選的參數

send(content)

向伺服器發送請求

setRequestHeader("header", "value")

把指定首部設定為所提供的值。在設定任何首部之前必須先調用open()

Ajax的使用

為什麼使用Ajax?因為它可以實現非同步通訊,可以對頁面部分重新整理,同時減少了資料轉送量,最重要的一點是給了使用者更好的體驗。

Ajax在當前web中非常常見,比如Google的地圖,每次拖動都會重新載入該地區,但頁面並沒有重新整理;百度的搜尋方塊,輸入後出現匹配的內容;微博上面的內容更新,也未重新載入頁面……

Ajax用戶端生命週期

把這個周期分成了六個容易區分的過程,如下:

(1)使用者對某個網址提出瀏覽請求。
(2)伺服器將HTML頁面內容發送給瀏覽器。
(3)瀏覽器根據所收到的HTML內容,在記憶體中建立DOM。
(4)使用者觸發非同步請求給伺服器。此舉不會影響既有的DOM,即使用者操作不會被打斷。
(5)瀏覽器將XML格式資料發送給原頁面中的JavaScript函數進行處理。
(6)瀏覽器解析結果,接著更新記憶體中的DOM,網頁部分內容被更新,非常平順地顯示頁面。

實現原理

Ajax的載入和傳統Web應用相同:首先,輸入URL地址或點選連結引發了瀏覽器一次HTTP請求;然後伺服器處理請求,產生合適的HTML、CSS以及JavaScript,並發送至用戶端;用戶端瀏覽器將這一段HTML顯示出來;此後的使用者操作的響應開始不同:使用者的這些操作將不會引發瀏覽器的另一次HTTP請求,而是將引發用戶端的某段JavaScript代碼的執行。

再怎麼形象的描述也不如一張圖:

一個簡單的執行個體:不重新載入頁面擷取book.xml中的書名。

HTML代碼:

<html xmlns="http://www.w3.org/1999/xhtml"><head><title>book</title><script type="text/javascript">    function loadXMLDoc() {        var xmlhttp;        var txt, x, i;        if (window.XMLHttpRequest) {        // 當今主流瀏覽器            xmlhttp = new XMLHttpRequest();        }        else {        // IE5、IE6            xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");        }        //狀態        xmlhttp.onreadystatechange = function () {            if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {                xmlDoc = xmlhttp.responseXML;                txt = "";                //擷取全部書名                x = xmlDoc.getElementsByTagName("書名");                for (i = 0; i < x.length; i++) {                    txt = txt + x[i].childNodes[0].nodeValue + "<br />";                }                //把書名寫到myp中                document.getElementById("myp").innerHTML = txt;            }        }        //使用get,非同步項為true        xmlhttp.open("GET", "book.xml", true);        xmlhttp.send();    }</script></head><body><h2>我的藏書:</h2><br/><p id="myp"></p><br/><br/><button type="button" onclick="loadXMLDoc()">擷取我的藏書</button> </body></html>

book.xml

<書籍>  <書  類別="網路">    <書名 lang="en">WEB開發</書名>    <作者>M</作者>    <年份>2008</年份>    <價格>35</價格>  </書>  <書 類別="電腦">    <書名 lang="en">儲存體</書名>    <作者>C</作者>    <年份>2012</年份>    <價格>30</價格>  </書></書籍>

運行結果:未重新整理顯示結果如下

本篇文章到這就結束了(想看更多就到topic.alibabacloud.comAJAX使用手冊欄目中學習),有問題的可以在下方留言提問。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.