gpt4 book ai didi

javascript - 为什么 ajax loadXml 回调似乎不起作用

转载 作者:行者123 更新时间:2023-11-30 16:23:06 27 4
gpt4 key购买 nike

我看不出我在哪里做错了:我的表是空的,我想使用控制台进行调试,但不知道如何。

更新:此示例有效 http://www.w3schools.com/ajax/tryit.asp?filename=tryajax_xml2我使用了那里的代码但是使用了不同的 xml 我不明白为什么我的代码不起作用

enter image description here

<!DOCTYPE html>
<html>
<head>
<title>XML Data Block Demo</title>

<style>
table, th, td {
border: 1px solid black;
border-collapse:collapse;
}
th, td {
padding: 5px;
}
</style>

<script>
function parseXML(input) {
var xml = input.responseXML;
var parser = new DOMParser();
var doc = parser.parseFromString(xml, "application/xml");
var lineItems = doc.getElementsByTagName("Stock");

var table="<tr><th>Ticker</th><th>Price</th></tr>";
for (i = 0; i <lineItems.length; i++) {
table += "<tr><td>" +
lineItems[i].getElementsByTagName("Ticker")[0].childNodes[0].nodeValue +
"</td><td>" +
lineItems[i].getElementsByTagName("Price")[0].childNodes[0].nodeValue +
"</td></tr>";
}

document.getElementById("table").innerHTML = table;
}

function loadXML() {
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (xhttp.readyState == 4 && xhttp.status == 200) {
parseXML(xhttp);
}
};
xhttp.open("GET", "http://localhost/ajax/xml/demo1/stocks.xml", true);
xhttp.send();
}
</script>
</head>
<body onload="loadXML()";>
<table id="table"></table>
</body>
</html>

最佳答案

我用 stocks.xml 的内容测试了你的功能它在 ie11 上工作正常,所以我建议您进行以下更改:

function parseXML(input) {
var xml = input.responseXML || input.responseText;
var doc;
try {
var parser = new DOMParser();
doc = parser.parseFromString(xml, "application/xml");
} catch(err) {
doc = new ActiveXObject("Microsoft.XMLDOM");
doc.async = false;
doc.loadXML(xml);
}

完整代码为:

<!DOCTYPE html>
<html>
<head>
<title>XML Data Block Demo</title>
<style>
table, th, td {
border: 1px solid black;
border-collapse:collapse;
}
th, td {
padding: 5px;
}
</style>

<script>
function parseXML(input) {
var xml = input.responseXML || input.responseText;
var doc;
try {
var parser = new DOMParser();
doc = parser.parseFromString(xml, "application/xml");
} catch(err) {
doc = new ActiveXObject("Microsoft.XMLDOM");
doc.async = false;
doc.loadXML(xml);
}
var lineItems = doc.getElementsByTagName("Stock");

var table="<tr><th>Ticker</th><th>Price</th></tr>";
for (i = 0; i <lineItems.length; i++) {
table += "<tr><td>" +
lineItems[i].getElementsByTagName("Ticker")[0].childNodes[0].nodeValue +
"</td><td>" +
lineItems[i].getElementsByTagName("Price")[0].childNodes[0].nodeValue +
"</td></tr>";
}
document.getElementById("table").innerHTML = table;
}

function loadXML() {
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (xhttp.readyState == 4 && xhttp.status == 200) {
parseXML(xhttp);
}
};
xhttp.open("GET", "http://localhost/ajax/xml/demo1/stocks.xml", true);
xhttp.send();
}
</script>
</head>
<body onload="loadXML()";>
<table id="table"></table>
</body>
</html>

xml内容为:

<?xml version="1.0"?>
<portfolio xmlns:dt="urn:schemas-microsoft-com:datatypes">
<stock exchange="nasdaq">
<name>new</name>
<symbol>zzzz</symbol>
<price dt:dt="number">20.313</price>
</stock>
<stock exchange="nyse">
<name>zacx corp</name>
<symbol>ZCXM</symbol>
<price dt:dt="number">28.875</price>
</stock>
<stock exchange="nasdaq">
<name>zaffymat inc</name>
<symbol>ZFFX</symbol>
<price dt:dt="number">92.250</price>
</stock>
<stock exchange="nasdaq">
<name>zysmergy inc</name>
<symbol>ZYSZ</symbol>
<price dt:dt="number">20.313</price>
</stock>
</portfolio>

在我的电脑上使用 Chrome/IE/FireFox 最新版本的结果是:

enter image description here

关于javascript - 为什么 ajax loadXml 回调似乎不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34466583/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com