javascript - 我想将 JSON 数据从 json 文件调用到 html 表
问题描述
我想将 JSON 数据从 json 文件调用到 html 表。但是,错误一次又一次地出现。为什么?有人能帮我吗?
我想在 HTML 表中打印 JSON 数据。“你好”是问题,它有 4 个选项和 1 个答案。
但是,JSON 数据不会出现在 HTML 页面中。
为了检查这个我把
使用类演示标记并仅在此位置调用“Hello”,但没有任何数据到来。
我也在使用 console.log(data); 检查 JSON 数据是否正在调用。但是,它显示一个错误。
错误:未捕获的 SyntaxError:位置 1 处 JSON 中的意外标记 o
var data = {
"mydata":[
{
"Hello":"abcd",
"opt":["ab","cd","ef","gh"],
"ans":"cd"
},
{
"Hello":"efgh",
"opt":["ab","cd","ef","gh"],
"answer":"ab"
},
{
"Hello":"ijkl",
"opt":["ab","cd","ef","gh"],
"answer":"ef"
},
{
"Hello":"mnop",
"opt":["ab","cd","ef","gh"],
"answer":"gh"
}
]
};
<!DOCTYPE html>
<html lang="en">
<head>
<title>Bootstrap Example</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.16.0/umd/popper.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js"></script>
<script src="data.js"></script>
</head>
<body>
<div class="container">
<p class="demo"></p>
<table class="table">
<thead>
<tr>
<th>Hello</th>
<th>1</th>
<th>2</th>
<th>3</th>
<th>4</th>
</tr>
</thead>
<tbody>
<tr>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
</tbody>
</table>
</div>
<script>
var myobj = JSON.parse(data);
console.log(myobj);
</script>
</body>
</html>
解决方案
这里发生了什么事?
实际上,该data
变量根本不是 JSON(它可能看起来像 JSON,但实际上不是),您可以使用typeof
method轻松找到它。所以看看下面的代码片段。
var data = {
"mydata": [{
"Hello": "abcd",
"opt": ["ab", "cd", "ef", "gh"],
"ans": "cd"
},
{
"Hello": "efgh",
"opt": ["ab", "cd", "ef", "gh"],
"answer": "ab"
},
{
"Hello": "ijkl",
"opt": ["ab", "cd", "ef", "gh"],
"answer": "ef"
},
{
"Hello": "mnop",
"opt": ["ab", "cd", "ef", "gh"],
"answer": "gh"
}
]
};
console.log('data type is:', typeof data);
console.log('JSON data type is:', typeof JSON.stringify(data));
JSON 与 type 存在string
,但在您的情况下,data
变量是 anobject
所以每当您尝试获取它的类型时,它都会返回object
。但是,当您使用内置方法对其进行字符串化时,它将显示为string
.
如何解决这个问题?
所以最后,为了读取data
值,你只需要像这样获取mydata
属性data
:data.mydata
然后通过for
循环遍历它。
所以你的最终代码应该是这样的:
var data = {
"mydata": [{
"Hello": "abcd",
"opt": ["ab", "cd", "ef", "gh"],
"ans": "cd"
},
{
"Hello": "efgh",
"opt": ["ab", "cd", "ef", "gh"],
"answer": "ab"
},
{
"Hello": "ijkl",
"opt": ["ab", "cd", "ef", "gh"],
"answer": "ef"
},
{
"Hello": "mnop",
"opt": ["ab", "cd", "ef", "gh"],
"answer": "gh"
}
]
};
data.mydata.forEach((item, index) => console.log(`item ${index} in mydata is:`, item))
推荐阅读
- javascript - 'this' 在拦截绑定行为期间不引用当前对象上下文
- java - 如何设置 SameSite 属性?
- firebase - 将firebase与redux-sagas连接的正确方法是什么?
- python - 将句子列表转换为单词标记列表
- json - 从一个巨大的 json 文件 (18mb) 中存储、读取和提取信息以在我的 React.js 项目中使用的最佳方法是什么?
- python - 现有的 django 模块名称与新的 pip 包冲突
- mysql - 如何合并两个连接表中的行?
- python - 如何使用 PyList 在 Python C API 扩展中返回整数列表?
- woocommerce - 在 woocommerce 新订单电子邮件和已完成订单电子邮件上显示产品图片
- docker - 查找哪个容器使用 Docker Volume