AjaxPro的原理简单说明

//鉴于很多网友在问AjaxPro的工作原理简单说明,就写了这份js,希望对初学者有点帮助,没有测试过,只是解释了Ajax得原理
//我也是接触js和Ajax时间不长,错误之处多多指正,同时欢迎大家多到 http://www.shareach.com灌水
//执行步骤是:
//   调用callAjaxMethod:
//        url:正常得URL,如:http://www.shareach.com/test1.aspx?id=2
//        callbackFunc:异步方式调用后回调得函数,这个函数需要你自己写,如function MyCallBack(res){..}
//        说明:callAjaxMethod会衣次执行 AjaxObject、CreateXMLHttpRequest、CallServer,最后等待OnRecvCallback发生
//  作者:Shareach站长
//  网址:http://www.shareach.com
/***************************************************************************/
function callAjaxMethod(url,callbackFunc)
{
    var oAjax=AjaxObject(url,callbackFunc);
    oAjax.URL = url;
    oAjax.callBackFunc = callbackFunc;
    oAjax.CallServer();
}


//创建对象
function AjaxObject()
{
    this.XMLReq = this.CreateXMLHttpRequest();
    this.URL = "";
    this.callBackFunc = null;
    this.Base = this;
}

//第一步、创建HttpRequest对象
AjaxObject.prototype.CreateXMLHttpRequest=function() 

    var oXMLHttpRequest = false;
    if (window.XMLHttpRequest) 
    {//创建 XMLHttpRequest对象,非IE
        oXMLHttpRequest = new XMLHttpRequest();  
    }else if (window.ActiveXObject) 
    {// 如果是IE,就以Active方式创建
        try {//创建最新版本得对象      
            oXMLHttpRequest = new ActiveXObject("Msxml2.XMLHTTP");    
        } catch (e1) 
        { 
            try {//尝试老版本
                oXMLHttpRequest = new ActiveXObject("Microsoft.XMLHTTP");
            } catch (e2) {}//创建不起来就是失败                
        } 
    }
    return oXMLHttpRequest;


//第二步发送请求
//url就是正常得URL,如:http://www.shareach.com/test1.aspx?id=2
CreateXMLHttpRequest.prototype.CallServer = function() {
    if (!(Base.XMLReq))//没有创建成功XMLHttpRequest
        return;
  //链接服务器
  Base.XMLReq.open("GET", Base.URL, true);
  //等待接受信息
  Base.XMLReq.onreadystatechange = OnRecvCallback;
  // Send the request
  Base.XMLReq.send(null);
}

//第三步,等待信息到达
CreateXMLHttpRequest.prototype.OnRecvCallback = function() {
  if (Base.XMLReq.readyState == 4) {
    var response = Base.XMLReq.responseText;
    //执行回调
    Base.callBackFunc(response);
  }
}

你可能感兴趣的:(Ajax)