日期:2014-05-16  浏览次数:20656 次

(急)为什么我在VS2008下不能实现XMLHttpRequest对象?
各位大侠,小菜遇到一个很恼火的问题,望指教:
  我在VS2008环境下尝试以XMLHttpRequest对象实现局部刷新,可是在javascript中XMLHttpRequest居然是一个字段,无法实例化,更无法调用该对象的其他方法。经过多次尝试,包括判断条件格式什么的都改过无数次了,还是不行,请大侠们帮我看看,是不是要实例化这个对象需要在web.config文件下另行配置或者需要在Page指令下进行其他配置呢?
  (我这里看见的:只有ActivexObject 是一个类,其他的比如:window/XMLHttpRequest显示都是以字段德形式,最后一行xmlHttp根本没有Open()/Send()方法)
  以下是代码:
JScript code


    <script language="javascript" type="text/javascript">
    var xmlHttp;
    var requestType = "";
    
    function  createXMLHttpRequest()
    {x
        if (ActiveXObject)a
       {
             xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
       }
       else if (XMLHttpRequest)
       {
            xmlHttp = new XMLHttpRequest();
       }       
    }
    
    function showDB(returestedList)
    {
        requestType = returestedList;
        createXMLHttpRequest();
        xmlHttp
    }
    
    
    </script>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    
        <input id="btnOne" type="button" value="只显示第一页" onclick="return showDB('one')" /></div>
    </form>
    <p>
        <input id="btnAll" type="button" value="全部显示" onclick="return showDB('two')" /></p>
</body>


  
 

------解决方案--------------------
var xmlHttp = false;
try {
xmlHttp = new XMLHttpRequest();
} catch (trymicrosoft) {
try {
xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch (othermicrosoft) {
try {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
} catch (failed) {
xmlHttp = false;
}
}
}

------解决方案--------------------
xmlhttprequest不需要配置web.config的,一些浏览器原本就支持xmlhttprequest,而不是asp.net支不支持xmlhttprequest,和asp.net无关


不过if(ActiveXObject)你这样写,在非ie浏览器下会出错,因为非ie内核浏览器并没有ActiveXObject对象,所以就出错了,导致下面的else if (XMLHttpRequest)语句不执行

JScript code
//if(ActiveXObject)
//=========>>
if(window.ActiveXObject)

------解决方案--------------------
JScript code
var xmlHttp;
    
    function createXmlHttpRequest()
    {
        if(window.XMLHttpRequest)
        {
            xmlHttp=new XMLHttpRequest();
        
            if(xmlHttp.overrideMimeType)
                {
                    xmlHttp.overrideMimeType("text/xml");
                }
        }
        else if(window.ActiveXObject)
        {
            try
            {
                xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");   
            }
            catch(e)
            {
                xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");   
            }
        }
        if(!xmlHttp)
        {
            window.alert("你的浏览器不支持创建XMLhttpRequest对象");
        }
        return xmlHttp;
        
    }