2008年10月15日
9:36:12
創(chuàng)建新的XMLHttpRequest對象:
<script language="javascript" type="text/javascript">
var request = new XMLHttpRequest();
</script>
javaScript 不要求指定變量類型
創(chuàng)建 XMLHttpRequest 的 Java 偽代碼:
XMLHttpRequest request = new XMLHttpRequest();
JavaScript 中用 var
創(chuàng)建一個變量,給它一個名字(如 “request”),然后賦給它一個新的 XMLHttpRequest
實例。此后就可以在函數(shù)中使用該對象了。
發(fā)送請求:
1.設(shè)置服務(wù)器URL:var url = "/myservlet/ajax/2.jsp";
如果需要增加另一個參數(shù),只需要將其附加到 URL 中并用 “與”(&
)字符分開 [第一個參數(shù)用問號(?
)和腳本名分開]。?"phone=" + escape(phone)
2.打開請求: request.open("GET",url,true);
五個參數(shù):request-type;url;asynch;username;password;
3.發(fā)送請求: request.send(null);
一個參數(shù):要發(fā)送的內(nèi)容。前面url本身已經(jīng)發(fā)送過數(shù)據(jù)了,不需要再用send發(fā)送了,如果要是發(fā)送安全信息或xml則需要指定
4.指定回調(diào)方法: request.onreadystatechange = updatePage;
注意:onreadystatechange允許指定一個回調(diào)函數(shù)。在代碼中設(shè)置的位置要在send之前,這樣服務(wù)器在回答完成請求之后才能查看該屬性。
處理響應(yīng):
function updatePage(){
alert("Serve is done");
}
就緒狀態(tài):
request.readyState 當(dāng)?shù)扔?的時候調(diào)用回調(diào)函數(shù)。
另外:其他的幾種狀態(tài)是:
- 0:請求未初始化(還沒有調(diào)用
open()
)。
- 1:請求已經(jīng)建立,但是還沒有發(fā)送(還沒有調(diào)用
send()
)。
- 2:請求已發(fā)送,正在處理中(通常現(xiàn)在可以從響應(yīng)中獲取內(nèi)容頭)。
- 3:請求在處理中;通常響應(yīng)中已有部分?jǐn)?shù)據(jù)可用了,但是服務(wù)器還沒有完成響應(yīng)的生成。
- 4:響應(yīng)已完成;您可以獲取并使用服務(wù)器的響應(yīng)了。
獲取0就緒狀態(tài):
<input type="button" onclick="getData()" value="click"/>
<script type="text/javascript">
function getData(){
var request = new XMLHttpRequest();
alert("Ready state is:"+request.readyState);
}
</script>
查看處理請求的就緒狀態(tài):
<input type="button" onclick="getData()" value="click"/>
<script type="text/javascript">
var request;
function getData(){
request = new XMLHttpRequest();
alert("Ready state is:"+request.readyState);
var url = "/myservlet/ajax/2.jsp";
request.open("GET",url,true);
request.onreadystatechange=updatePage;
request.send(null);
}
function updatePage(){
alert("updatePage() called with ready sate of"+request.readyState);
}
</script>
響應(yīng)數(shù)據(jù):
var new = request.responseText;
responseText屬性