gpt4 book ai didi

javascript - 无法从 XML 数据完全填充 HTML 表

转载 作者:行者123 更新时间:2023-11-30 15:42:57 25 4
gpt4 key购买 nike

在这里,我试图用 AJAX 调用返回的 XML 数据填充 HTML 表格。

我的问题是我无法完全填充 HTML 表格。因为,我是 AJAX 的新手,所以我无法弄清楚 XML 解释是如何工作的以及如何解码错误的根本原因。

这是我的网页代码

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<style>
table, th, td
{
border: 1px solid black;
border-collapse: collapse;
}
th, td
{
padding: 5px;
}
</style>
</head>
<body>
<h1>Enter Book Details</h1><br>

<form method="post" action="http://localhost:8080/mysql/glarimy/lib/addbook" onsubmit="myButton.disabled = true; return true;">
Title :<br> <input type = "text" name = "title" ><br>
Author :<br><input type = "text" name = "author" ><br>
Price : <br><input type = "text" name = "price" ><br>
No. of Pages :<br><input type="text" name = "pages" ><br>
<input type = "submit" id="submit" value = "Add Book">
<input type = "reset" value ="Reset"><br><br>
</form>

<button onclick = "location.href = 'http://localhost:8080/mysql/glarimy/lib/getall'" type = "button">Get all book data in XML</button>
<button type="button" onclick="loadXMLDoc()">Get all books data </button>
<table id="demo"></table>
<script>
function loadXMLDoc()
{
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function()
{
if (this.readyState == 4 && this.status == 200)
{
myFunction(this);
}
};
xmlhttp.open("GET", "http://localhost:8080/mysql/glarimy/lib/getall", true);
xmlhttp.send();
}
function myFunction(xml)
{
var i;
var xmlDoc = xml.responseXML;
var table="<tr><th>ISBN</th><th>Title</th><th>Author</th><th>Price</th><th>No. of Pages</th></tr>";
var x = xmlDoc.getElementsByTagName("book");
for (i = 0; i < x.length; i++)
{
table += "<tr><td>" +
x[i].getElementsByTagName("isbn")[0].childNodes[0].nodeValue +
"</td><td>" +
x[i].getElementsByTagName("title")[0].childNodes[0].nodeValue +
"</td><td>";
x[i].getElementsByTagName("author")[0].childNodes[0].nodeValue +
"</td></td>";
x[i].getElementsByTagName("pages")[0].childNodes[0].nodeValue +
"</td><td>" +
x[i].getElementsByTagName("price")[0].childNodes[0].nodeValue +
"</td><tr>";
}
document.getElementById("demo").innerHTML = table;
}
</script>
</body>
</html>

我从 AJAX 调用中得到如下 XML 数据

<books>
<book>
<author>mark</author>
<isbn>1</isbn>
<pages>500</pages>
<price>2000.0</price>
<title>java</title>
</book>
<book>
<author>john</author>
<isbn>2</isbn>
<pages>100</pages>
<price>1000.0</price>
<title>advancedjava</title>
</book>
<book>
<author>paul</author>
<isbn>3</isbn>
<pages>500</pages>
<price>500.0</price>
<title>tomcat</title>
</book>
<book>
<author>jack</author>
<isbn>4</isbn>
<pages>1000</pages>
<price>5000.0</price>
<title>rest</title>
</book>
</books>

我得到的输出是 Click Here

任何人都可以向我解释一下 AJAX 代码的实际工作原理吗?我无法追踪到 XML 解码部分。

更新输出:Click this

最佳答案

看起来问题出在您的表格构建上。您正在关闭 <tr>在不需要时标记并且有太多分号。这是修复:

for (i = 0; i < x.length; i++) 
{
table += "<tr><td>" +
x[i].getElementsByTagName("author")[0].childNodes[0].nodeValue +
"</td><td>" +
x[i].getElementsByTagName("isbn")[0].childNodes[0].nodeValue +
"</td><td>"+
x[i].getElementsByTagName("pages")[0].childNodes[0].nodeValue +
"</td><td>" +
x[i].getElementsByTagName("price")[0].childNodes[0].nodeValue +
"</td><td>"+
x[i].getElementsByTagName("title")[0].childNodes[0].nodeValue +
"</td></tr>";
}

您可以在这张图片中看到您的代码存在的问题: enter image description here

关于javascript - 无法从 XML 数据完全填充 HTML 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40507273/

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