天天看點

【原】Ajax技術原理Ajax原理Ajax核心技術

主要内容:

  1. Ajax原理
  2. Ajax核心技術

Ajax是Asynchronous JavaScript and XML的簡稱,意思是異步的JavaScript和XML。

主要包括技術:

  1. web标準的XHTML+CSS
  2. 使用DOM(Document object model)進行動态顯示和互動
  3. 使用xml和xslt标簽進行資料交換
  4. 使用XMLHttpRequest與伺服器進行異步資料查詢和檢索
  5. 使用JavaScript綁定

建立一個XMLHttpRequest對象向伺服器發送異步請求,擷取資料後使用JavaScript的DOM模型對象更新頁面。(局部更新)

ajax為了實作這種異步請求,在用戶端和伺服器之間增加了一層Ajax引擎。它實作了使用者與伺服器之間的過渡(中介)。由于用戶端和伺服器不會直接互動,需要一個中介傳遞資訊。

(自己簡單的制作了一個圖,直接使用mspaint畫的,雖然有點醜)

【原】Ajax技術原理Ajax原理Ajax核心技術

XMLHttpRequest+DOM+CSS可實作局部重新整理功能,其中最核心的就是XMLHttpRequest對象。

XMLHttpRequest

XMLHttpRequest常用屬性:

  • readyState(0未初始化,1正在加載,2加載完畢,3互動,4完成)
  • onreadystatechange(每次狀态改變後觸發的處理程式)
  • responseText(伺服器傳回的資料)
  • responseXML(伺服器傳回DOM相容的文檔資料對象)
  • status(伺服器傳回代碼,比如404——NOT FUND,200——OK)

XMLHttpRequest常用方法:

  • open(string method,string url,boolean asynch)調用伺服器,第三個參數可以不填,預設ture
  • send(content)發送到伺服器

XMLHttpRequest的建立流程:

  • 建立XMLHttpRequest對象并初始化
  • 發送請求
  • 伺服器接受請求并處理
  • 傳回響應資料
  • 用戶端接受并處理結果
  • 依據響應資料修改用戶端頁面内容

代碼示範一下:

XMLHttpRequestDemo.js      
var xmlHttp;//用于存儲XMLHttpRequest對象

//建立一個XMLHttpRequest對象
function createXmlHttp(){
	//根據XMLHttpRequest對象是否存在,使用不同的建立方式
	if(window.XMLHttpRequest){
		xmlHttp=new XMLHttpRequest();//Firefox、Opera支援的建立方式
	}else{
		xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");//IE浏覽器支援的建立方式
	}
}

//發送請求
function sendrequest(){
	createXmlHttp();
	xmlHttp.open("GET","request.jsp",true);//第三個參數預設為true
	xmlHttp.onreadystatechange=doinfo;//指定響應函數
	xmlHttp.send(null);
}

//處理傳回結果
function doinfo(){
	
	if(xmlHttp.readyState==4){//判斷狀态是否為4(完成)
		if(xmlHttp.status==200){//判斷資訊已經成功傳回
			//處理資訊
			var res=XHR.responseXML.getElementsByTagName("res")[0].firstChild.data;
		}
	}
}
      

JavaScript(Java腳本)

在Ajax中,JavaScript就像是一座橋梁,将HTML與(DOM,XMLHttpRequest,css,xml)聯系起來。

最常用的是JavaScript的事件,比如:

  • onchange(選中區域的值發生改變觸發),
  • onclick(滑鼠左鍵單擊觸發),
  • onload(文檔加載觸發),
  • onkeyup(鍵盤按下釋放後觸發)

DOM(文檔對象模型)

它封裝了對HTML、xml操作的接口。在Ajax中如果沒有DOM,那麼局部重新整理,異步請求等操作将無法進行。

常用屬性:

  • nodeName節點名稱
  • nodeValue節點值
  • parentNode父節點
  • childNodes子節點
  • firstChild子節點清單中第一個節點
  • attributes傳回元素的屬性清單(僅用于元素節點)

常用的節點方法:

  • createElement(elemntName)建立一個元素
  • createAttribute(attributeName)建立一個屬性
  • setAttribute(name,value)建立一個name屬性并設定為value
  • getElementByTagName(elementName)傳回具有指定名稱元素的節點清單
  • getElementById(elementId)傳回具有指定Id元素的節點

CSS(樣式表)

由于web開發越來越注意頁面的美化效果,是以css也越來越火了,在Ajax中css同樣擔負美化作用。

美勞工員将控制頁面的樣式寫入一個.css字尾的檔案,開發人員隻需要通過一個語句便可以将樣式應用進來,十分友善。

<link href="skin.css" type="text/css" rel="stylesheet" />
      

XML

一種可擴充的标記語言,使用文法與HTML相似,也是由标簽和文本組成。

差別:

  • HTML的标簽是定義好的(不可私自更改),XML标簽是自定義的(随便你更改)
  • HTML關心文本的顯示形式(顔色,大小),XML更關心文本的内容

 下面直接碼代碼,使用XMLHttpRequest對象,将XML文檔的内容擷取出來并顯示在頁面上:

AjaxDemo.html

<html>
	<head>
		<!-- <meta charset="utf-8" /> -->
		<title>Demo</title>
	</head>
	<body>
		<h1>Ajax中XML的作用</h1>
		<br/>
		<input type="button" value="點選" onclick="sendRequest()" />
		<br/>
		<div id="bookinfo"></div>
		
		<script language="javascript">
			var xmlHttp;//用于存儲XMLHttpRequest對象

			//建立一個XMLHttpRequest對象
			function createXmlHttp(){
				//根據XMLHttpRequest對象是否存在,使用不同的建立方式
				if(window.XMLHttpRequest){
					xmlHttp=new XMLHttpRequest();//Firefox、Opera支援的建立方式
				}else{
					xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");//IE浏覽器支援的建立方式
				}
			}

			//發送請求
			function sendRequest(){
				createXmlHttp();
				console.log("讀取book.xml檔案");
				xmlHttp.open("GET","book.xml",true);//第三個參數預設為true
				xmlHttp.onreadystatechange=doInfo;//指定響應函數
				xmlHttp.send(null);
			}

			//處理傳回結果
			function doInfo(){
				
				if(xmlHttp.readyState==4){//判斷狀态是否為4(完成)
					if(xmlHttp.status==200){//判斷資訊已經成功傳回
						//處理資訊
						var res=xmlHttp.responseXML;
						var xml=xmlHttp.responseText;
						alert(xml);//顯示xml内容
						var name=res.getElementsByTagName("name")[0].firstChild.nodeValue;
						var writer=res.getElementsByTagName("writer")[0].firstChild.nodeValue;
						var data=res.getElementsByTagName("date")[0].firstChild.nodeValue;
						var price=res.getElementsByTagName("price")[0].firstChild.nodeValue;
						var response=name+"<br/>"+writer+"<br/>"+data+"<br/>"+price;
						document.getElementById("bookinfo").innerHTML=response;
					}
				}
			}
		</script>
	</body>
</html>
      

book.xml

<?xml version="1.0" encoding="utf-8" ?>
<book>
	<name>書名:《消失的地平線》(Lost horizon)</name>
	<writer>作者:【英國】詹姆斯 希爾頓(James Hilton)</writer>
	<date>出版日期:1933年4月</date>
	<price>價格:50.00</price>
	<number>出版數:10000</number>
</book>
      

運作效果:

【原】Ajax技術原理Ajax原理Ajax核心技術
【原】Ajax技術原理Ajax原理Ajax核心技術
【原】Ajax技術原理Ajax原理Ajax核心技術

需要注意的地方,就是這個xml檔案和html檔案得放在同一個路徑下,并且部署到伺服器中

【原】Ajax技術原理Ajax原理Ajax核心技術

 這裡的伺服器使用的tomcat(小貓咪比較好用)

ok,就到這裡。歡迎大家交流分享。

 請尊重本人辛苦勞動成果

轉載請注明:

https://www.cnblogs.com/1906859953Lucas/p/9416479.html

謝謝啦。