
function getXMLHTTPRequest()
{
var xRequest = null

if (window.XMLHttpRequest)
{
xRequest = new XMLHttpRequest() ; // Mozilla / Safari

}else if ( typeof ActiveXObject != 'undefined')
{
xRequest = new ActiveObject("Microsoft.XMLHTTP"); // IE
}
return xRequest ;
}
同樣的,我們使用對(duì)象檢測(cè)來測(cè)試是否支持原生的 XMLHttpRequest 對(duì)象,如果不支持,再測(cè)試是否支持 Activex 對(duì)象。在兩者都不支持的瀏覽器中,我們簡單的放回 null 。
向服務(wù)器發(fā)送請(qǐng)求:(給它傳遞一個(gè)服務(wù)器頁面的 URL,這個(gè)頁面將生成數(shù)據(jù))

function sendRequest(url,params,HttpMehtod)
{

if( !HttpMethod )
{
HttpMethod = 'POST';
}
var req = getXMLHTTPRequest();

if(req)
{
req.oepn(HttpMethod,url,true);
req.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
req.send(params);
}
}
XMLHttpRequest 支持大量的HTTP 調(diào)用語義,包括用來動(dòng)態(tài)生成頁面的可選查詢字符串參數(shù)(你可能已經(jīng)知道這些 CGI 參數(shù)、FORM 參數(shù)或者 ServletRequest參數(shù),取決于服務(wù)器端的開發(fā)背景)。
sendRequest() 方法包含的第二個(gè)和第三個(gè)參數(shù)都是可選參數(shù),大部分情況下都用不上。默認(rèn)使用Post 方法來獲取資源,在請(qǐng)求的主題部分不需要傳遞任何參數(shù)。
分配一個(gè)回調(diào)函數(shù): 在未來某個(gè)不確定的時(shí)刻,當(dāng)結(jié)果返回的時(shí)候,將會(huì)執(zhí)行這段代碼。
window.onload 函數(shù)就是一個(gè)回調(diào)函數(shù)。
使用回調(diào)函數(shù):

var READY_STATE_UNIITIALIZED = 0;
var READY_STATE_LOADING = 1;
var READY_STATE_LOADED = 2;
var READY_STATE_INTERACTIVE =3 ;
var READY_STATE_COMPLETE = 4;
var req;


function sednRequest(url,params,HttpMethod)
{

if(!HttpMethodd)
{
HttpMthod = 'GET';
}
req = getXMLHTTPRequest();

if(req)
{
req.onreadystatechange = onReadyStateChange;
req.open(HttpMethod,url,true);
req.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
req.send(params);
}
}


function onReadyStateChange()
{
var ready = req.readyState;;
var data = null;

if(ready == READY_STATE_COMPLETE)
{
data = req.responseText;

}else
{
data = 'loading
[' + ready + ']';
}
//
do something with the data
}
這里將請(qǐng)求對(duì)象聲明為一個(gè)全局對(duì)象,這樣有利于保持事情的簡單,那如何同時(shí)發(fā)送多個(gè)請(qǐng)求。。
待續(xù)。。。。
posted on 2008-12-08 22:25
CopyHoo 閱讀(566)
評(píng)論(0) 編輯 收藏 所屬分類:
Ajax