在ajax中提交有兩種形式:同步和非同步
xmlHttp.open("GET", url, true);
xmlHttp.open("GET", url, false);
同步:提交後等待伺服器的響應,接收伺服器返回的資料後再執行下面的代碼
非同步:與上面相反,提交後繼續執行下面的代碼,而在後台繼續監聽,伺服器響應後有程式做相應處理,非同步操作好處是不必等待伺服器而可以繼續在用戶端做其它事情。
樣本:
function dbOnclick(){
var req
=
new
XMLHttpRequest();
var url="www.google.cn";
req.open(
"
GET
"
,url,
true
);
//
與服務端建立串連(請求方式post或get,URL,true表示非同步,false表示同步)
req.onreadystatechange
=
callback;
//
指定回呼函數
req.send(
null
);
//
發送請求
alert("非同步模式");//如果是非同步請求,此句
緊接上句直接執行,
不用等伺服器返迴響應再執行,伺服器響應有回呼函數監視
//如果是同步請求,此句要等伺服器返迴響應才能執行
}
//
回呼函數,對服務端的響應處理,監視response狀態
function callback(){
if
(req.readystate
==
4
)
//
請求狀態為4表示成功
{
if
(req.status
==
200
)
//
http狀態200表示OK
{
doSomething;
//
所有狀態成功,執行相應代碼
alert(req.
responseText
);
}else{
alert(
"
服務端返回狀態
"
+
req.statusText);
}
}else{
alert("資料載入中...");
}
}
XMLHttpRequest 對象的方法與屬性
方 法 |
描 述 |
abort() |
停止當前請求 |
getAllResponseHeaders() |
把 HTTP 請求的所有響應首部作為鍵 / 值對返回 |
getResponseHeader("header") |
返回指定首部的串值 |
open("method", "url") |
建立對伺服器的調用。 method 參數可以是 GET 、 POST 或 PUT 。 url 參數可以是相對 URL 或絕對 URL 。這個方法還包括 3 個可選的參數 |
send(content) |
向伺服器發送請求 |
setRequestHeader("header", "value") |
把指定首部設定為所提供的值。在設定任何首部之前必須先調用 open() |
屬 性 |
描 述 |
onreadystatechange |
每個狀態改變時都會觸發這個事件處理器,通常會調用一個 JavaScript 函數 |
readyState |
請求的狀態。有 5 個可取值: 0 = 未初始化, 1 = 正在載入, 2 = 已載入, 3 = 互動中, 4 = 完成 |
responseText |
伺服器的響應,表示為一個串 |
responseXML |
伺服器的響應,表示為 XML 。這個對象可以解析為一個 DOM 對象 |
status |
伺服器的 HTTP 狀態代碼( 200 對應 OK , 404 對應 Not Found (未找到),等等) |
statusText |
HTTP 狀態代碼的相應文本( OK 或 Not Found (未找到)等等) |