从html接收的值更改为在Node.js处添加“ \ u001c”。如何解决?

时间:2019-09-01 07:25:59

标签: javascript html node.js mongodb mongoose

一旦我提交了在表单中选择的值“ Tokyo”,则在node.js接收的值将在“ Tokyo”之前包含不必要的字符“ \ u001c”。

权利价值:“东京”
值错误:“ \ u001cTokyo”

我想在Monogodb中保存正确的值。

作为一个临时解决方案,我尝试删除仅不必要的字符并将其值保存在mongodb中,但是没有用。 req.body.prefecture.replace(/\u001c/g, "");

为了确保发生了什么,我已经转储了从html从node.js接收到的值。

前端:HTML

<form action="/places/update" method="post" enctype="multipart/form-data">

 <select class="form-control" id="prefecture" name="prefecture">
  <option value="Tokyo" selected>Tokyo</option>
  <option value="Chiba">Chiba</option>
  <option value="Kanagawa">Kanagawa</option>
 </select>

 <button type="submit" class="btn btn-success">Register</button>
</form>

后端:node.js

router.post("/update", upload.single("file"), (req, res) => {
 console.log(req.body);
 console.log(req.body.prefecture);
 console.log("Tokyo");
});

日志

[Object: null prototype] {
  prefecture: '\u001cTokyo'
}
Tokyo
Tokyo

您能告诉我为什么会这样以及如何获得正确的价值吗?

1 个答案:

答案 0 :(得分:2)

我了解的是,多部分的http Post请求发送时带有一个正文,该正文专门格式化为由边界字符串分隔的一系列“部分”(请参见https://ec.haxx.se/http-multipart.html)。

\u001cTokyo部分是一个信息分隔符(请参见https://codepoints.net/U+001C)。

因此,我认为,它用作内容类型标题中添加的那些“部分”的分隔符。

那么也许您可以在没有enctype的情况下发出Post请求?正如其他人所提议的。