0

我的一个客户有一个用组件开发的表单Mosets Tree。在表单中,当您选择主类别时,它会自动显示子类别。现在的问题是;我不得不隐藏一些代码来停止显示一些东西,之后我们选择主类别后显示子类别的 java 脚本在 IE 中不起作用。

代码:

var xmlhttp;
function stateChanged(){
    if (xmlhttp.readyState==4) {
        document.getElementById("subCatId").innerHTML = xmlhttp.responseText;
    }
}

function fnGetSubCategory() {
    xmlhttp = GetXmlHttpObject();
    var new_cat_id = document.getElementById("new_cat_id").value;
    if (xmlhttp==null)
    {
        alert ("Browser does not support HTTP Request");
        return true;
    }

    var url="ps.php?cat_id="+new_cat_id;
    xmlhttp.onreadystatechange=stateChanged;
    xmlhttp.open("GET",url,true);
    xmlhttp.send(null);

}

function GetXmlHttpObject() {
    if (window.XMLHttpRequest) {
        return new XMLHttpRequest();
    }
 
    if (window.ActiveXObject) {
        return new ActiveXObject("Microsoft.XMLHTTP");
    }
    return null;
 
} 
 

它在所有其他浏览器中运行良好。

提前致谢。

4

1 回答 1

0

尝试使用以下代码创建对象 xmlHttp:

function createXmlHttpRequestObject(){
var xmlHttp;
try{
        xmlHttp = new XMLHttpRequest();
}
catch (e) {

    // If its IE 6 or other version before

    var XmlHttpVersions = new Array('MSXML2.XMLHTTP.6.0','MSXML2.XMLHTTP.5.0','MSXML2.XMLHTTP.4.0','MSXML2.XMLHTTP.3.0','MSXML2.XMLHTTP','Microsoft.XMLHTTP');

    // We try all versions

    for (var i=0; i<XmlHttpVersions.length && !xmlHttp; i++){
        try {

            //Try creating xmlHttp object

            xmlHttp = new ActiveXObject(XmlHttpVersions[i]); 
        }
        catch (e){
            xmlHttp = false;
        }
    }
}

// If object doesn't exist sends error

if (!xmlHttp){
    alert("Error creating XMLHttpRequest object");
}

else{
    return xmlHttp;
}
}
于 2015-05-14T19:56:41.993 回答