AJAX出來的時間也不短了。雖然它在某些方面很受爭議,但是瑕不掩瑜。AJAX不能說它屬於哪門語言,而是任何一門語言與JavaScript,XML的交叉。我覺得,說Ajax是任何一門WEB語言與DHTML、XML的交叉這樣更加合適。
以下只討論IE部分。
Ajax在應用中使用有3個部分(個人觀點):
1、資料(一般通過IE內建群組件Microsoft.XMLHTTP來取得或者發送資料);
2、事件(事件指的是用戶端事件,如果是服務端事件,那麼AJAX也就沒什麼意義了);
3、綁定(暫且就叫綁定吧,也可以說是顯示,一般通過DHTML來完成)。
從上面看,Ajax就使用了Microsoft.XMLHTTP組件和DHTL。其實還有另外一部分,就是伺服器端的處理。
一、簡單樣本
就最簡單的原型來說,就是取得資料:
a.aspx的內容如下:aaaaa
b.aspx取得<div id="MyShow"/>
<script language="JavaScript">
var xmlhttp= new ActiveXObject("Microsoft.XMLHTTP");
//資料轉送,flase為非非同步方式
xmlhttp.open("GET","a.aspx",true);
xmlhttp.onreadystatechange=function() {
if (xmlhttp.readyState==4) {
MyShow.InnerText = xmlhttp.responseText;
}
if (xmlhttp.readyState==3) {
MyShow.InnerText = ('正在提交資料');
}
}
xmlhttp.send(null);
}
</script>
a.aspx提供可資料
xmlhttp.open("GET","a.aspx",true);就是請求a.aspx
if (xmlhttp.readyState==4) {
MyShow.InnerText = xmlhttp.responseText;
}
當非同步請求完成時,用DHML改變MyShow的內容。
二、GET方法
更改a.aspx如下:<script runat="Server" language="C#">
string flag = Request["flag"] == null ? "" : Request["flag"];
switch(flag)
{
case "1":
Response.Write("11111111111111");
break;
case "2" :
Response.Write("22222222222222");
break;
}
</script>
把b.aspx中
xmlhttp.open("GET","a.aspx",true);改成xmlhttp.open("GET","a.aspx?flag=1",true);
則得到資料11111111111111
xmlhttp.open("GET","a.aspx",true);改成xmlhttp.open("GET","a.aspx?flag=2",true);
則得到資料22222222222222
三、POST方法
如果有這樣一個表單
<form method=post>
<input name="p1" type=text />
<input name="p2" type=submit/>
</form>
用AJAX就是<div id="MyShow"/>
<script language="JavaScript">
var xmlhttp= new ActiveXObject("Microsoft.XMLHTTP");
//資料轉送,flase為非非同步方式
xmlhttp.open("Post","a.aspx",true);
xmlhttp.onreadystatechange=function() {
if (xmlhttp.readyState==4) {
MyShow.InnerText = xmlhttp.responseText;
}
if (xmlhttp.readyState==3) {
MyShow.InnerText = ('正在提交資料');
}
}
xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
xmlhttp.send("p1=qwdqwdqwdqwd"); //這裡是POST要提交的資料。
}
</script>
而一般類比請求都是POST和Get同時存在的
只要把
xmlhttp.open("Post","a.aspx",true);
裡a.aspx加上get請求部分就可以了。
而在.Net中特別得,可以把Ajax寫成伺服器組件來使用。現在在實際項目中如果使用Ajax很多的情況,就有個專門的組件來使用了。還有就是要注意,在很多時候Ajax的時候要設定頁面不緩衝。而如果要相容非IE核心瀏覽器,那麼就要注意各種核心瀏覽器的JS是否相容了。