XMLHttpRequest后不能在IE9

时间:2015-06-22 13:18:04

标签: javascript xml xmlhttprequest innerhtml

我有以下黑色代码,它在Chrome& Firefox但每次都在IE上失败,它返回" undefined"在控制台选项卡中。

<html>
<head>
    <script type="text/javascript" charset="utf-8" src="/js/jquery-latest.js"></script>

<script>
$(document).ready(function()
{

test(); 

});


function test()
{

          if (window.XMLHttpRequest)
          {// code for IE7+, Firefox, Chrome, Opera, Safari
          xmlhttp=new XMLHttpRequest();
          }
        else
          {// code for IE6, IE5
          xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
          }
        xmlhttp.open("GET","/xml/products.xml",false);
        xmlhttp.send();
        xmlDoc=xmlhttp.responseXML;
        var list = xmlDoc.getElementsByTagName("product");
        console.log(list[0].childNodes[1].innerHTML);

}
    </script>
</head>
</html>

我正在使用的XML如下:

感谢您的时间。

编辑:jQuery ajax版本无法正常工作:

var xmlDoc;     
$.ajax({
    type: "GET",
    url: "/xml/products.xml",
    dataType: "xml",
    success: function (xml) {
        xmlDoc = xml;
                var list=xmlDoc.getElementsByTagName("product");
                console.log(list[1].childNodes[1].innerHTML );
    }
});

1 个答案:

答案 0 :(得分:2)

不知道为什么这在Chrome和FF中有效,它实际上不应该 1

您正在加载XML文档,并且正在成功选择XML元素节点。那些没有innerHTML属性 2 的人。如果你真的需要获取xml文档的标记,你应该使用XMLSerializer(也许你只是在寻找.textContent?)。

var el = list[0].childNodes[1];
console.log(new XMLSerializer().serializeToString(el));

然而,oldIE甚至不知道,你需要el.xml使用 3

1:至少在旧版本中没有。另见does innerHTML work with XML Elements? 2:显然,DOM解析规范现在包含所有DOM元素的通用innerHTML attribute 3:见JavaScript: Replacement for XMLSerializer.serializeToString()?