<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>xmlhttprequest ajax demo</title>
<script type ="text/javascript" language ="javascript" >
var req; //定義變數,用來建立xmlhttprequest對象
function creatReq() // 建立xmlhttprequest,ajax開始
{
var url="ajaxServer.aspx"; //要請求的服務端地址
if(window.XMLHttpRequest) //非IE瀏覽器及IE7(7.0及以上版本),用xmlhttprequest對象建立
{
req=new XMLHttpRequest();
}
else if(window.ActiveXObject) //IE(6.0及以下版本)瀏覽器用activexobject對象建立,如果使用者瀏覽器禁用了ActiveX,可能會失敗. {
req=new ActiveXObject("Microsoft.XMLHttp");
}
if(req) //成功建立xmlhttprequest
{
req.open("GET",url,true); //與服務端建立串連(請求方式post或get,地址,true表示非同步)
req.onreadystatechange = callback; //指定回呼函數
req.send(null); //發送請求
}
}
function callback() //回呼函數,對服務端的響應處理,監視response狀態
{
if(req.readystate==4) //請求狀態為4表示成功
{
if(req.status==200) //http狀態200表示OK
{
Dispaly(); //所有狀態成功,執行此函數,顯示資料
}
else //http返回狀態失敗
{
alert("服務端返回狀態" + req.statusText);
}
}
else //請求狀態還沒有成功,頁面等待
{
document .getElementById ("myTime").innerHTML ="資料載入中";
}
}
function Dispaly() //接受服務端返回的資料,對其進行顯示
{
document .getElementById ("myTime").innerHTML =req.responseText;
}
</script>
</head>
<body>
<div id="myTime"></div>
<input id="Button1" type="button" value="Get Time" onclick ="creatReq();"/>
</body>
</html>
對於Ajax需要注意執行 的 順序
對於input 類型為text的 動作有 onChange() onPropertyChange() 後者比前者的反應 更加的敏感,有可能onChange()不會隨著裡面的改變而改變,但是onPropertyChange()肯定會隨著value的值 改變而改變。
對於返回的值,要把結果寫在最後的條件都符合的情況下,就是注意函數的位置。
操作xml的時候 用到的方法 和以前操作xml的是一樣的,如getElementsByTagName(),還有.firstChild.data,nodeValue.
Ajax執行的順序是open,onreadystatechange,send 都是基於流的形式傳輸。
對於servlet裡面 注意 都是 用流的形式進行 傳輸和取值。resp.setContentType(),裡面得相應的設定方式。