自知其无知
不懂,慢慢懂。
posts - 2,comments - 2,trackbacks - 0

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

只有注册用户登录后才能发表评论。


网站导航: