Ajax引擎

 

    前面讲过,Ajax引擎是由javascript编写的。


第一步:初始化XMLHttpRequest对象。
    
http_request = false;                  //开始初始化XMLHttpRequest对象

if(window.XMLHttpRequest) {    //Mozilla 浏览器
    http_request = new XMLHttpRequest();
    if (http_request.overrideMimeType) {         //设置MiME类别
         http_request.overrideMimeType("text/xml");
    }
}
else if (window.ActiveXObject) {                 // IE浏览器
try {
      http_request = new ActiveXObject("Msxml2.XMLHTTP");
     } catch (e){
               try{
          http_request = new ActiveXObject("Microsoft.XMLHTTP");
           } catch (e){ }
     }
   }
第二步 设置XMLHttpRequest对象的onreadystatechange属性,指定服务器返回响应数据时要调用的回调函数,即指定响应处理函数。


if(responseType.toLowerCase()=="text") {
http_request.onreadystatechange = callback;
}
else if(responseType.toLowerCase()=="xml") {
http_request.onreadystatechange = callback;
}
第三步 调用XMLHttpRequest对象的open 方法,创建http请求。

第四步 调用XMLHttpRequest对象的setResouceHeader等方法,设置必要的http请求头信息。


if(method.toLowerCase()=="get") {
   http_request.open(method, url, true);
}
else if(method.toLowerCase()=="post") {
     http_request.open(method, url, true);
     http_request.setRequestHeader("Content-       Type","application/x-www-form-     urlencoded");
}
第五步 调用XMLHttpRequest对象的send方法,发送之前创建http请求。

第六步 根据XMLHttpRequest对象的open方法参数,决定等待或者不等待服务器返回响应数据。如果服务器返回响应数据,则将控制权交给之前设置的回调函数。


http_request.send(content);

       上述步骤实现了发送请求准备,对于服务器响应的数据在发送XMLHttpRequest请求时即为他指定了回调函数,在回调函数中应该首先判断http请求的状态,之后再做响应的处理;否则在服务器接收http请求到返回响应数据这一段时间内,回调函数会多次执行。回调函数应该以下列顺序执行事务。

第一步 判断http请求的状态,并作相应处理。

      

       if (http_request.readyState == 4)

           if (http_request.status == 200)


第二步 调用XMLHttpRequest对象的responseXML或者 responseText方法,将服务器返回的响应数据赋予   javascript变量或者对象。


      var doc = http_request.responseXML;


第三步 使用DOM或者其他方式解析服务器返回的响应数   据,保存在缓存变量或者缓存数组中。


       var messageList = doc.getElementsByTagName("message");


第四步 使用DOM解析HTML文档,定位目标HTML文档节点。


第五步 使用解析完毕的服务器返回的响应数据,更新上一步解析获取的HTML文档节点的属性值或者内容,从而更新HTML文档页面内容。

 

    简单的说,Ajax引擎就是用javascript编写,使用XMLHttpRequest对象将客户端请求异步发送到服务器端,并对服务器返回的响应数据进行分派,通过指定回调函数进行处理。至于如何处理,要根据返回的数据是reponseXML还是responseText选择相应函数。

posted @ 2010-05-04 22:26  wupingzsf  阅读(835)  评论(0编辑  收藏  举报