关门了。这个问题是不可复制的或由打字错误引起的。它目前不接受答案。
想要改进这个问题吗?更新问题,使其成为主题堆栈溢出。6个月前就关门了。
改进这个问题
我是Javascript的新手,遇到了一些麻烦。我尝试在我的js代码中解析一个Json文件。我一直收到标题中提到的错误。似乎我的json格式错误,但我已经检查过了。我不知道有什么问题。错误发生在JSON.parse()
document.getElementById('loadjson').addEventListener('click', function(e) {
e.preventDefault();
var jsonData = document.getElementById('jsondata').value;
fetch('http://127.0.0.1:5500/src/main/resources/savedData.json')
.then(response => response.json())
.then(data => console.log(data))
.then(function(data) {
var obj = JSON.parse(data);
document.getElementById("demo").innerHTML =
obj.pages[0].url;
});
});
{
"pages":[
{
"wikipage":{
"latestModifier":{
},
"author":{
"name":"some name",
"username":"some userid"
},
"latest_modification":"Tue Mar 14 10:42:33 CET 2017",
"url":"some url"
}
},
{
"wikipage":{
"latestModifier":{
},
"author":{
"name":"some name",
"username":"some userid"
},
"latest_modification":"Thu Jun 08 08:12:38 CEST 2017",
"url":"some url"
}
}
]
}
发布于 2020-09-11 16:13:37
这里有两个问题:
response.json() 解析为JSON
JSON.parse(data)将响应解析为JSON,并返回解析为JavaScript数据结构的promise。
使用之后没有任何意义(除了HTTP响应已经双倍编码为JSON,在这种情况下,您应该修复web服务。
返回未定义
The console.log
方法记录您传递给它的值并返回undefined
所以:
.then(data => console.log(data))
通行证undefined转到下一个then您需要传递data
fetch('http://127.0.0.1:5500/src/main/resources/savedData.json')
.then(response => response.json())
.then(data => {
console.log(data);
return data;
})
.then(function(obj) {
document.getElementById("demo").innerHTML =
obj.pages[0].url;
});
或者不要添加额外的then
首先:
fetch('http://127.0.0.1:5500/src/main/resources/savedData.json')
.then(response => response.json())
.then(function(obj) {
console.log(obj);
document.getElementById("demo").innerHTML =
obj.pages[0].url;
});
发布于 2020-09-11 16:30:32
尝试以下操作:
fetch('http://127.0.0.1:5500/src/main/resources/savedData.json')
.then(response => response.json())
.then(data => {
var obj = data;
document.getElementById("demo").innerHTML =
obj.pages[0].url;
} );
你不需要使用JSON.parse,因为你已经有了一个有效的对象。@Quentin给出了一个很好的解释
https://stackoverflow.com/questions/63843104
复制相似问题