我们在向服务端发送请求时,可能会用到同步或异步的形式,并且服务端返回数据后(如XML,TEXT或其它),我们需要处理得到的数据,那么处理数据的代码放在哪里呢? 当然是放在客户端,但是假如我在向服务端发送数据,服务端处理完毕,这里需要向客户端发送一个提示信息,可以用alert,也可以用DIV显示之,所以这里我可以用回调函数的形式来达到自定义处理数据的效果.
下面这段代码的第四个参数是指定同步或异步形式发送数据,第五个参数是传递一个自定义回调函数的引用,我们可以在该回调函数里来处理从服务端所得到的数据,或者显示相关的提示信息,如果使用同步方式发送数据,回调数据可以不用指定.
function mfSendHttpRequest(url,strReq,HttpMethod,synch,callback){
msg = '';
req = getXMLHttpRequest();
if (synch) //--异步发送数据
if (callback) req.onreadystatechange = callback;//--客户端指定的CALLBACK函数
else if(!callback){
req.onreadystatechange = function (){ //--未指定CALLBACK系统自动给一下缺省的CALLBACK
if (req.readyState == 4) {
if (req.status == 200) {msg ='ok';window.status='';}
else window.status = req.status;
} else
window.status = "[synch]loading...";
}
}
req.Open(HttpMethod,url,synch);
req.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
//xmlHttp.setRequestHeader("context-type","text/xml;charset=gb2312");
req.Send(strReq);
if(!synch){ //--同步发送数据
if (req.status == 4) {
if (req.status == 200) {msg = req.responseText; window.status='';}
else window.status = req.status;
} else window.status = "loading...";
return req.responseText;
} else
if(synch) if ( msg =='ok' ) return req.responseText;
}