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的內容如下:
aaaaab.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是否兼容了。
http://birdshover.cnblogs.com/archive/2006/07/03/441439.Html