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 ;
}
同样的,我们使用对象检测来测试是否支持原生的 XMLHttpRequest 对象,如果不支持,再测试是否支持 Activex 对象。在两者都不支持的浏览器中,我们简单的放回 null 。
向服务器发送请求:(给它传递一个服务器页面的 URL,这个页面将生成数据)
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 调用语义,包括用来动态生成页面的可选查询字符串参数(你可能已经知道这些 CGI 参数、FORM 参数或者 ServletRequest参数,取决于服务器端的开发背景)。
sendRequest() 方法包含的第二个和第三个参数都是可选参数,大部分情况下都用不上。默认使用Post 方法来获取资源,在请求的主题部分不需要传递任何参数。
分配一个回调函数: 在未来某个不确定的时刻,当结果返回的时候,将会执行这段代码。
window.onload 函数就是一个回调函数。
使用回调函数:
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
}
这里将请求对象声明为一个全局对象,这样有利于保持事情的简单,那如何同时发送多个请求。。
待续。。。。
posted on 2008-12-08 22:25
CopyHoo 阅读(561)
评论(0) 编辑 收藏 所属分类:
Ajax