json 为什么我的请求正文中有HTML?

nx7onnlm  于 2023-08-08  发布在  其他
关注(0)|答案(1)|浏览(111)

我有一个Svelte应用程序,它从一个名为savechanges的服务器端表单操作发出API POST请求。代码如下所示:

savechanges: async ({ params, request }) => {
    const data = await request.formData();
    const body = { toggled: data.get("toggled"), channel: data.get("channel"), role: data.get("role") };

    const update_res = await fetch(`https://myapi.com`, {
        method: "POST",
        headers: { auth: API_KEY, "Content-Type": "application/json" },
        body: body,
    });
    const update = await update_res.json();

    return update ? update : { success: false };
}

字符串
如果我记录变量body,我会看到这个输出

{
  toggled: 'false',
  channel: '793818346595418113',
  role: '780844467565494302'
}


这就是它本来的样子
尽管如此,每当我试图发送这个请求时,我的终端会收到这个错误:

SyntaxError: Unexpected token '<', "<html>
<h"... is not valid JSON
    at JSON.parse (<anonymous>)
    at parseJSONFromBytes (/path/to/app/node_modules/undici/lib/fetch/body.js:580:15)
    at successSteps (/path/to/app/node_modules/undici/lib/fetch/body.js:520:23)
    at /path/to/app/node_modules/undici/lib/fetch/util.js:821:56
    at node:internal/process/task_queues:140:7
    at AsyncResource.runInAsyncScope (node:async_hooks:203:9)
    at AsyncResource.runMicrotask (node:internal/process/task_queues:137:8)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)


我不知道为什么我的请求是试图张贴HTML内容或它甚至来自哪里。如果有人能看到我在这里错过的东西,那将是惊人的!

wn9m85ua

wn9m85ua1#

您可能会得到html,因为响应是一个错误页面。
将JavaScript对象转换为JSON。

const update_res = await fetch(`https://myapi.com`, {
    method: "POST",
    headers: { auth: API_KEY, "Content-Type": "application/json" },
    body: JSON.stringify(body),
});

字符串
另外,你可以在chrome devtools的netwrok选项卡下检查响应。

相关问题