响应是html而不是JSON?

Response is html and not JSON?

提问人:WG- 提问时间:11/14/2023 最后编辑:Brian Tompsett - 汤莱恩WG- 更新时间:11/14/2023 访问量:37

问:

我有一个大的JSON文件,我希望实现一个小的API,它从JSON文件中收集一些条目。我有以下内容,如下所示。

现在我想要一个 JSON 响应,但是当我查询站点时,我得到的是(呃)HTML。在控制台中,我得到了 JSON,但这不是一个完整(正确)的响应,对吧......?我怎样才能让响应与html完全分开?

enter image description here

法典;

<!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>
JavaScript JSON 响应

评论

0赞 Justinas 11/14/2023
那么怎么了?您请求json文件,将其解析为有效的JSON对象并使用它。
0赞 WG- 11/14/2023
好吧,我希望实际上 json 响应位于“响应”下方;o.remove.bg/downloads/ab8b8ff5-9c34-439f-afa2-4966db7cc27e/......使用正确的标头进行 alogn;o.remove.bg/uploads/36e03d05-80ec-4610-969c-8004b6771c38/......(所以不是 HTML,而是 JSON)?

答:

1赞 mitiko 11/14/2023 #1

您的 JavaScript 代码在浏览器中运行。您的浏览器接收 HTML,然后在其中执行脚本并在本地获取文件。

如果您希望在后端处理 JSON 文件,在将其发送给用户之前,您需要一个类似于 express.js 的服务器

评论

0赞 WG- 11/14/2023
嗯,听起来很明显,不知道为什么我没有想到这一点。因此,这种行为只有在真正拥有服务器时才有可能。
0赞 mitiko 11/14/2023
我想在你完成处理后,你可以用json结果替换html正文,但你仍然在下载大文件。