Javascript 无法将json文件数据呈现为html
我有一个名为colors.js的JSON文件,如下所示:Javascript 无法将json文件数据呈现为html,javascript,json,Javascript,Json,我有一个名为colors.js的JSON文件,如下所示: { "colors": [ { "color": "black", "category": "hue", "type": "primary", "code": { "rgba": [255,255,255,1], "hex": "#000" } },
{
"colors": [
{
"color": "black",
"category": "hue",
"type": "primary",
"code": {
"rgba": [255,255,255,1],
"hex": "#000"
}
},
{
"color": "white",
"category": "value",
"code": {
"rgba": [0,0,0,1],
"hex": "#FFF"
}
},
]
}
var colorsjs = {
"colors": [//....code
下面是我如何处理html文件的:
<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<meta charset="utf-8">
<script type="primary" src="colors.json"></script>
<script type="text/javascript">
colorItems=['beige', 'red', 'blue'];
function loadJSON() {
var xobj = new XMLHttpRequest();
xobj.overrideMimeType("application/json");
xobj.open('GET', 'colors.json', true);
xobj.onreadystatechange = function () {
if (xobj.readyState == 4 && xobj.status == "200") {
colorItems.push(JSON.parse(xobj.responseText)); // line 21
console.log(xobj.responseText); // line 22
}
};
}
function loadData(){
for (i=0; i<4; i++){
console.log(colorItems[i]);
document.getElementById('myP1').innerHTML+=colorItems[i]+'<br>';
}
}
</script>
<title></title>
</head>
<body onload="loadData()">
<p class="myP" id="myP1"></p>
<p class="myP" id="myP2"></p>
<p class="myP" id="myP3"></p>
<p class="myP" id="myP4"></p>
<p class="myP" id="myP5"></p>
</body>
</html>
颜色项=['米色','红色','蓝色'];
函数loadJSON(){
var xobj=新的XMLHttpRequest();
重写emimetype(“application/json”);
open('GET','colors.json',true);
xobj.onreadystatechange=函数(){
如果(xobj.readyState==4&&xobj.status==“200”){
colorItems.push(JSON.parse(xobj.responseText));//第21行
console.log(xobj.responseText);//第22行
}
};
}
函数loadData(){
对于(i=0;i我认为将颜色(对象)推送到colorItems(数组)的方法可以是:
colorsjs.colors.map((o,i)=>{
colorItems.push(o.color);
});
然后,在加载数据中:
function loadData(){
for (i=0; i<colorItems.length; i++){
document.getElementById('myP'+(i+1)).innerHTML = colorItems[i]+'<br>';
}
}
您可能想看看这个答案:
首先,您没有正确接收.json,因为您甚至没有调用loadJSON()。可以定义和调用函数。您所做的只是定义两个函数,然后通过“onload”参数调用第二个函数。您忘记了调用loadJSON()。如果您不知道如何做,您必须编写loadJSON()就在loadData里面
Seconly,即使您调用该函数,它也不会工作,因为您没有在服务器上工作。因此,正如上面链接中的问题所述,您将得到以下错误:
XMLHttpRequest无法加载文件:///[文件路径]。只有协议方案支持跨源请求:http、数据、chrome、chrome扩展、https、chrome扩展资源
关于你的第一个问题,你应该采取不同的方法。使用循环,你应该创建尽可能多的p元素,就像元素具有最终颜色数组一样。看看这个指南:,你能添加一个你想要的最终结果的示例吗?我刚刚添加了一个屏幕截图。谢谢。但我需要数据可以从JSON文件中读取,但在html文件中不可用(硬编码)。@MaYaNicolson这是相同的想法,但我不能用JSFIDLE或其他我理解的东西进行复制。但我已经有一个问题(在主要问题中提到)是因为我无法以正确的格式从JSON文件中获取数据。如果您看到我的屏幕截图,“未定义”将呈现在段落中。如果您可以在此处将此问题的解决方案作为注释或答案发布,那就太好了。感谢您的解释。1.我可能必须运行(虚拟)我的机器上的服务器。我说的对吗?2.我已经修好了!如果你是新手,我不建议你运行自己的服务器。相反,搜索一些流行的Web服务器来为你做这项工作!我建议你使用DigitalOcean,它提供了广泛的服务。
<script src="/path/to/colors.js"></script>
<script>
//it's already available
console.log(colorsjs);
</script>
var colorsjs = {
"colors": [//....code