提问人:WG- 提问时间:11/14/2023 最后编辑:Brian Tompsett - 汤莱恩WG- 更新时间:11/14/2023 访问量:37
响应是html而不是JSON?
Response is html and not JSON?
问:
我有一个大的JSON文件,我希望实现一个小的API,它从JSON文件中收集一些条目。我有以下内容,如下所示。
现在我想要一个 JSON 响应,但是当我查询站点时,我得到的是(呃)HTML。在控制台中,我得到了 JSON,但这不是一个完整(正确)的响应,对吧......?我怎样才能让响应与html完全分开?
法典;
<!DOCTYPE html>
<html>
<head>
<title>Glossary API</title>
</head>
<body>
<script>
function fetchData() {
const urlParams = new URLSearchParams(window.location.search);
const term = urlParams.get('term');
const abbr = urlParams.get('abbr');
if (!abbr && !term) {
console.error('Both abbreviation and term parameter is missing. Either one or both is needed.');
return;
}
if (!abbr)
console.warn('Abbreviation parameter is missing.');
if (!term)
console.warn('Term parameter is missing.');
fetch('data/glossary.json',
{
method: 'POST',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json'
}
})
.then(response => response.json())
.then(data => {
const result = data.filter(
item => ((item.abbreviation.toString().match(abbr) && abbr) ||
(item.term.toString().match(term) && term))
)
if (!result) {
console.error('Abbreviation or definition not found');
return;
}
// Display the result on the page as JSON
console.log(JSON.stringify(result, null, 2))
document.body.innerHTML = JSON.stringify(result, null, 2);
})
.catch(error => console.error('Error fetching data:', error));
}
fetchData();
</script>
</body>
</html>
答:
1赞
mitiko
11/14/2023
#1
您的 JavaScript 代码在浏览器中运行。您的浏览器接收 HTML,然后在其中执行脚本并在本地获取文件。
如果您希望在后端处理 JSON 文件,在将其发送给用户之前,您需要一个类似于 express.js 的服务器
评论
0赞
WG-
11/14/2023
嗯,听起来很明显,不知道为什么我没有想到这一点。因此,这种行为只有在真正拥有服务器时才有可能。
0赞
mitiko
11/14/2023
我想在你完成处理后,你可以用json结果替换html正文,但你仍然在下载大文件。
上一个:无法从服务器获取任何数据作为响应
评论