javascript 如何解码通过提取POST请求发送的表单数据

11dmarpk  于 2023-03-11  发布在  Java
关注(0)|答案(3)|浏览(243)

我正在使用基本POST请求发送表单数据:

const formData = new FormData();
formData.append('id', '123');
const res = await fetch('./handler', { method: 'POST', body: formData });
const json = await res.json();

handler.js

export default async function handler(req, res) {
 console.log(req.body.id);
 ...
}

上面的代码将记录undefined。当记录req.body时,结果肯定需要解码:

------WebKitFormBoundary
Content-Disposition: form-data; name="id"

123
------WebKitFormBoundary --

如何读取传递的数据?

moiiocjp

moiiocjp1#

尝试使用formidable
在handler.js中

import formidable from 'formidable';

export default async function handler(req, res) {
  const form = formidable();

  form.parse(req, (err, fields) => {
    if (err) return console.error(err);

    console.log(fields.id);
  });
}
wi3ka0sx

wi3ka0sx2#

下午好,
您可以尝试查看一下this post并了解如何解码formdata
但是如果你打算在浏览器中运行这段代码,导入库会很麻烦,如果API能够用JSON响应,那么我建议你用JS来处理,不会太麻烦。
您可以尝试通过添加Accept头来请求JSON格式的数据:

const requestOptions = {
  method: "POST",
  headers: {
    "Content-Type": "application/x-www-form-urlencoded", // what you're sending
    "Accept": "application/json" // what you expect back
  }
}

您也可以只发送JSON()

const formData = new FormData();
formData.append('id', '123');

// would become
const reqBody = { id: 123 }
dffbzjpn

dffbzjpn3#

我相信您可以使用req.body.id来获得'123'的结果。Fetch将表单数据视为JSON IIRC。

相关问题