2010-11-09 59 views
0

我在第二次使用新的XMLHttpRequest()在从页面上的文本框事件调用的JavaScript代码中出现错误。 我的JavaScript发现从sql的文本输入的建议做,我使用xmlhttprequest,它做的很好,当它是第一次,但是当我继续在文本框中键入我收到“typeerror:xmlhttprequest不是一个costructor”(此错误发生仅在Firefox)页面上的多个xmlhttprequest

这是我的代码 功能fnNull(){}; 功能changeofstate(){ 如果(XMLHttpRequest.readyState == 4){ 任何 ;

} XMLHttpRequest.onreadystatechange = fnNull(); (){ } var WebURL =“这里的网址”; XMLHttpRequest = CreateXmlHttpObject(changeOfState); XMLHttpRequest.open(“GET”,WebURL,true); XMLHttpRequest.send(null); XMLHttpRequestt.abort(); }

}

功能CreateXmlHttpObject(处理){

var objXmlHttpReq = null; 
    var Req = null; 

       if (navigator.userAgent.indexOf("Opera")>=0) 
       {     
       return ; 
       } 
       if (navigator.userAgent.indexOf("MSIE")>=0) 
       { 
       var strName="Msxml2.XMLHTTP"; 
       if (navigator.appVersion.indexOf("MSIE 5.5")>=0) 
       { 
       strName="Microsoft.XMLHTTP"; 
       } 
       try 
       { 

       objXmlHttpReq=new ActiveXObject(strName); 
       objXmlHttpReq.onreadystatechange = handler; 

       return objXmlHttpReq; 
       } 
       catch(e) 
       {     
       return ; 
       } 
       } 
       if (navigator.userAgent.indexOf("Mozilla") >= 0) { 
       try 
       { 
         if (Req == null) { 
         Req = new XMLHttpRequest(); 
        } 

         Req.onload = handler; 
         Req.onerror = handler; 
         return Req; 

        } 
        catch (e) { 
         alert(e); 
        alert(Req.responseText) 
         alert(e); 
         return; 
        } 
       } 

}

回答

0

您应该为您的请求对象别的东西比XMLHttpRequest的。它可能会覆盖浏览器中的XMLHttpRequest对象。因此给你错误。

XMLHttpRequest = CreateXmlHttpObject(changeOfState); 

像这样分配XMLHttpRequest变量实际上是使用全局作用域。你应该使用var和另一个变量名

var req = CreateXmlHttpObject(changeOfState); 

希望澄清。

+0

好吧,我把它命名为需求,这是你的意思? – sweetyears 2010-11-09 16:59:50

+0

也当我在错误控制台看,我看到几个这种日志。未捕获的异常索引或大小,则允许量的代码负或更高:1个nsresult:“0x80530001纳秒错误DOM索引尺寸误差 – sweetyears 2010-11-09 17:06:37

+0

的XMLHttpRequest = CreateXmlHttpObject(changeOfState);应变种REQ = CreateXmlHttpObject(changeOfState); – DivineGod 2010-11-09 19:03:55