一個簡單的用戶端調用xmlHttp的例子。
用戶端調用xmlHttp的過程很簡單,只有5個步驟:
1、建立xmlHttp對象
2、開啟與服務端的串連,同時定義指令發送方式,服務網頁(URL)和請求許可權等。
用戶端通過Open命令開啟與服務端的服務網頁的串連。與普通Http指令傳送一樣,可以用"GET"方法或"POST"方法指向服務端的服務網頁。
3、發送指令。
4、等待並接收服務端返回的處理結果。
5、釋放xmlHttp對象<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>xmlHttp test</title>
<script type="text/javascript" language="javascript">
function jb() {
var A=null;
try {
A=new ActiveXObject("Msxml2.XMLHTTP");
}
catch(e) {
try {
A=new ActiveXObject("Microsoft.XMLHTTP");
}
catch(oc) {
A=null;
}
}
if ( !A && typeof XMLHttpRequest != "undefined" ) {
A=new XMLHttpRequest();
}
return A;
}
var req = null;
function doRequest() {
req = null;
//建立xmlHttp對象
req = jb();
//如果瀏覽器不支援,提示錯誤資訊。
if (!req) {
alert("Giving up. Cannot create an XMLHttp instance.");
return false;
}
//定義用來處理接收資料的回呼函數
req.onreadystatechange = callback;
/******* 這部分是以post方式提交的用法 ******/
//提交參數內容
var strData = "code=123";
//資料提交的目標位置
var url = "default.asp";
//以post方法,將參數code=123提交給default.jsp去處理
req.open("POST", url, true);
req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); //req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;charset=utf-8"); //用utf-8編碼
req.send(strData);
/*******************************************/
/******* 這部分是以get方式提交的用法 ******
//提交參數內容
var strData = "code=123";
//資料提交的目標位置,並將參數以get方式添加到url後面
var url = "default.asp?" + strData;
//以get方法,請求url:default.asp?code=123
req.open("GET", url, true);
req.send(null);
/*******************************************/
}
function callback() {
/* readyState屬效能夠反映出伺服器在處理請求時的進展狀況。
0 = uninitialized
1 = loading
2 = loaded
3 = interactive
4 = complete
*/
if (req.readyState == 4) {
/* HTTP status code (i.e., 200, 404, 500, etc.)
完整的狀態值可參考w3c的列表:http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html
我們只關心值為200的OK相應
*/
if (req.status == 200) {
showResponse();
} else {
alert("There was a problem with the request.");
}
}
}
function showResponse(){
/* 幾種傳回值的接收方法:
responseBody:結果返回為不帶正負號的整數數組。
responseStream:結果返回為IStream流。
responseText :結果返回為字串。
responseXML:結果返回為XML格式資料。
*/
alert(req.responseText);
}
</script>
</head>
<body>
<input type="button" name="Button" value="發出請求" onclick="doRequest()" />
</body>
</html> //default.asp 此略//在伺服器端 Post來的用Request.Form("code") 接收 Get來的用Request.QueryString("code")