【发布时间】:2015-06-22 13:18:04
【问题描述】:
我有以下黑色代码,在 Chrome 和 Firefox 上运行良好,但在 IE 上每次都失败,它在控制台选项卡中返回“未定义”。
<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 );
}
});
【问题讨论】:
-
你真的需要接触原生 XHR 吗?你为什么不用
$.ajax(),你好像已经有了jQuery。它解决了 LOT 的跨浏览器怪癖,尤其是像这样的供应商低级 API! -
我的 ajax 也有同样的问题,我只是想试试别的方法
-
在收到回复前需要检查状态变化,检查msdn.microsoft.com/en-us/library/dd576252(v=vs.85).aspx
-
请放心,问题出在其他地方。恢复到 jQuery 并发布该代码,这里有人可以帮助您。为什么
async=false与 CORS 有关系?我错过了什么吗?这两个方面在我的书中完全不相关...... -
@PatrickEvans 好的,错过了!但是你为什么不使用异步呢。
标签: javascript xml xmlhttprequest innerhtml