透過xmlHttp和ASP的結合,我們可以輕鬆完成網頁的非同步呼叫。
程式碼如下:
1.新建Display.asp(這是前台顯示頁面)
注意xmlhttp.readyState的4個屬性
1:LOADING;2:LOADED;3:INTERACTIVE;4:COMPLETED
<%@ Language=VBScript %>
<HTML>
<HEAD>
<META NAME=GENERATOR Content=Microsoft Visual Studio 6.0>
</HEAD>
<script language=javascript>
xmlhttp = new ActiveXObject(Msxml2.XMLHTTP);
function fnDo(ID)
{
var xmlDom = new ActiveXObject(Msxml2.DOMDocument);
var strURL = GetInfo.asp?ID= + ID;
xmlhttp.Open(POST,strURL , true);
xmlhttp.onreadystatechange = fnRun;
xmlhttp.Send(xmlDom);
divTest.innerHTML = Loading...
}
//------------------------------------------------ --------
function fnRun()
{
var state = xmlhttp.readyState;
var xmlDom = new ActiveXObject(Msxml2.DOMDocument);
if (state == 4)
{
xmlDom.loadXML(xmlhttp.responseXML.xml);
//alert(xmlDom.documentElement.selectSingleNode(//objXML).text)
var getInfo = xmlDom.documentElement.selectSingleNode(//objXML).text;
divTest.innerHTML = getInfo
}
}
</script>
<BODY>
<input type=text id=txtInput>
<input type=button value=非同步呼叫onclick=fnDo(document.all.txtInput.value)>
<DIV id=divTest></DIV>
<P> </P>
</BODY>
</HTML>
2.在建立GetInfo.asp(這是後台處理頁面)
<%
Dim sID,objResult
sID = Trim(Request(ID))
'sID = 28
Set objResult = Server.CreateObject(MSXML2.DOMDocument)
objResult.loadXML (<objXML></objXML>)
'************************************************* *************
'************************************************* *************
objResult.selectSingleNode(objXML).text = Get: & sID
Response.ContentType = text/xml
objResult.save (Response)
Response.End
Set objSch = Nothing
Set objResult = Nothing
%>
3.執行Display.asp頁面,在文字方塊輸入內容,點選按鈕,可以看到Loading的提示,隨後在不刷新頁面的情況下得到了文字方塊裡的內容。當然你也可以在GetInfo.asp那個頁面裡根據發送的參數做一些複雜的出來,隨後把結果回傳出來