【发布时间】:2020-03-02 05:17:39
【问题描述】:
您好,在下面的代码中,我想手动加载本地 JSON 文件而不是数据,我希望我的代码从文件中读取所有数据并显示在 HTML 表中。我的 JSON 文件放在 src/main/resources/json/movies.json 中。在代码中而不是编写 JSON 数组,如 var movies= [{}]...我想推送一个本地 JSON 文件。
<!DOCTYPE html>
<html>
<head>
<title>Convert JSON Data to HTML Table</title>
<style>
th, td, p, input {
font:14px Verdana;
}
table, th, td
{
border: solid 1px #DDD;
border-collapse: collapse;
padding: 2px 3px;
text-align: center;
}
th {
font-weight:bold;
}
</style>
</head>
<body>
<input type="button" onclick="CreateTableFromJSON()" value="Create Table From JSON" />
<p id="showData"></p>
</body>
<script>
function CreateTableFromJSON() {
var movies = [
{ "title":"The Shawshank Redemption",
"imdb-id":"tt0111161",
"rank":"1",
"rating":"9.216891492644972",
"rating-count":"2025250"
}
]
// EXTRACT VALUE FOR HTML HEADER.
// ('Book ID', 'Book Name', 'Category' and 'Price')
var col = [];
for (var i = 0; i < movies.length; i++) {
for (var key in movies[i]) {
if (col.indexOf(key) === -1) {
col.push(key);
}
}
}
// CREATE DYNAMIC TABLE.
var table = document.createElement("table");
// CREATE HTML TABLE HEADER ROW USING THE EXTRACTED HEADERS ABOVE.
var tr = table.insertRow(-1); // TABLE ROW.
for (var i = 0; i < col.length; i++) {
var th = document.createElement("th"); // TABLE HEADER.
th.innerHTML = col[i];
tr.appendChild(th);
}
// ADD JSON DATA TO THE TABLE AS ROWS.
for (var i = 0; i < movies.length; i++) {
tr = table.insertRow(-1);
for (var j = 0; j < col.length; j++) {
var tabCell = tr.insertCell(-1);
tabCell.innerHTML = movies[i][col[j]];
}
}
// FINALLY ADD THE NEWLY CREATED TABLE WITH JSON DATA TO A CONTAINER.
var divContainer = document.getElementById("showData");
divContainer.innerHTML = "";
divContainer.appendChild(table);
}
</script>
</html>
【问题讨论】:
-
使用 AJAX 抓取文件数据并将其加载到
movies对象中,如下所示:stackoverflow.com/questions/14388452/… -
请澄清您所说的“本地”是什么意思。在我看来,这意味着 Web 浏览器或客户端本地而不是服务器上。如果它在服务器上,您需要执行 HTTP GET 以将 JSON 数据读入 JavaScript,然后您可以从该数据构建 HTML 表。如果您指的是本地文件,例如用户计算机上的文件,则必须通过文件输入访问它。
标签: javascript jquery html json spring-boot