打算写一个简单的AJAX通用类,刚写了个 get方法,测试了一下,出错,大家帮解决!
JS脚本:
function Ajax()
{
         this.xmlhttp=false;
         if(window.ActiveXObject)
        {
            var ieArr=["Msxml2.XMLHTTP.6.0","MSXML2.XMLHTTP.5.0","MSXML2.XMLHTTP.4.0","Msxml2.XMLHTTP.3.0", "Msxml2.XMLHTTP","Microsoft.XMLHTTP"];     
             for(var i=0;i<ieArr.length;i++)
              {
                try
                {
                    xmlhttp= new ActiveXObject(ieArr[i]);
                   break;
                 }
                 catch(e)
                 {
                    continue;
                 }
              }
             }else if(window.XMLHttpRequest)
                    {
                      xmlhttp=new XMLHttpRequest();              
                    }                   
          if (!xmlhttp)  window.alert("您的浏览器不支持 XMLHttpRequest 对象!");  
}
Ajax.prototype.AjaxRequest=function(method,url,callback)
{    
      this.xmlhttp.open(method,url,true);
      this.xmlhttp.OnReadyStateChange=function()
           {
              if(xmlhttp.readyState ==4)
                {
                  if(xmlhttp.status==200)
                   {         
                    callback(this.xmlhttp);                                                                          
                   }
                 } 
            }
     
     this.xmlhttp.send(null);      
}页面url:(测试页 ShowData.aspx)
    protected void Page_Load(object sender, EventArgs e)
    {
        string val = "我是结果";
        Response.Clear();
        Response.Write(val);
        Response.Flush();
        Response.End();
    }
前台页面:
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>无标题页</title>
   <script src="AJAX Reg/Ajax.js"></script>    
   <script language="javascript" type="text/javascript">
    function DisplayData()
   {
var ajax=new Ajax();
ajax.AjaxRequest("Get","ShowData.aspx",ret)
  }
    function ret(obj)
   {
   alert(obj.responseText);
   }   </script>
</head>
<body>
    <form id="form1" runat="server">
    
        <input id="btn1" type="button" value="查看" onclick="DisplayData()" />
        <div id="ShowData">
        </div>
    </form>
</body>
</html>点击 button 出现错误 对象不支持属性或方法,错误在 红色地方

解决方案 »

  1.   

     this.xmlhttp.OnReadyStateChange
    这句 OnReadyStateChange 没有大写字母的 你当成C#了吧
      

  2.   


    var XmlHttp=false;
    function AjaxSet()
    {
        if (window.XMLHttpRequest)
            {
                XmlHttp = new XMLHttpRequest;
            }
        else
            {
                try
                    {
                        XmlHttp= new ActiveXObject("Microsoft.XMLHTTP");
                    }
                catch(e)
                    {
                        XmlHttp= new ActiveXObject("Msxml2.XMLHTTP");
                    }
            }
    }
    function AjaxSendServer()
        {
            AjaxSet();
            var phone=document.getElementById("phone").value;
            var url="Test.aspx?id="+phone;
            XmlHttp.onreadystatechange=updatepage;
            XmlHttp.open("GET",url,true);
            XmlHttp.send(null);
        }
    function updatepage()
        {
            if(XmlHttp.readyState==4)
            {
                if(XmlHttp.status==200)
                {
                    var reponse=XmlHttp.responseText;
                    document.getElementById("order").value=reponse;
                    XmlHttp=false;
                }
            }
        }
      

  3.   

    function Ajax() 

             this.xmlhttp=false; 
             if(window.ActiveXObject) 
            { 
                var ieArr=["Msxml2.XMLHTTP.6.0","MSXML2.XMLHTTP.5.0","MSXML2.XMLHTTP.4.0","Msxml2.XMLHTTP.3.0", "Msxml2.XMLHTTP","Microsoft.XMLHTTP"];      
                 for(var i=0;i <ieArr.length;i++) 
                  { 
                    try 
                    { 
                        xmlhttp= new ActiveXObject(ieArr[i]); 
                       break; 
                     } 
                     catch(e) 
                     { 
                        continue; 
                     } 
                  } 
                 }else if(window.XMLHttpRequest) 
                        { 
                          xmlhttp=new XMLHttpRequest();               
                        }                    
              if (!xmlhttp)  window.alert("您的浏览器不支持 XMLHttpRequest 对象!");   

    Ajax.prototype.AjaxRequest=function(method,url,callback) 
    {     
          this.xmlhttp.open(method,url,true); 
          this.xmlhttp.OnReadyStateChange=function() 
               { 
    if(this.xmlhttp.readyState ==4) 
                    { 
                      if(this.xmlhttp.status==200) 
                       {          
                        callback(this.xmlhttp);                                                                           
                       } 
                     }  
                } 
          
         this.xmlhttp.send(null);       

    改成小写了,但是换了台计算机,提示this.xmlhttp.readyState为空 或者不是对象!
    怎么回事啊!
      

  4.   

    if(this.xmlhttp.readyState ==4)  改为 if(xmlHttp.readystate==4) 
      

  5.   

    帖子肯定要结,那两天没上网, 改为 if(xmlHttp.readystate==4) 
    说 xmlHttp 未定义我网查了查,说this 指向了windows 对象
      

  6.   

    this.xmlhttp.open(method,url,true);
    this.xmlhttp.OnReadyStateChange=function()这里的this对象错误。这里的this不是指Ajax这个对象。而是指AjaxRequest这个对象
    所以把this去掉。调试JS最好用FF调试如果要指示对象可以在Ajax类中声明 
    var _self = this;然后在Ajax.prototype.AjaxRequest的方法中,_self为Ajax对象
      

  7.   


    直接声明为全局变量 var xmlHttp;
    后面别用this指针了