一旦我提交了在表单中选择的值“ 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
您能告诉我为什么会这样以及如何获得正确的价值吗?
答案 0 :(得分:2)
我了解的是,多部分的http Post请求发送时带有一个正文,该正文专门格式化为由边界字符串分隔的一系列“部分”(请参见https://ec.haxx.se/http-multipart.html)。
\u001cTokyo
部分是一个信息分隔符(请参见https://codepoints.net/U+001C)。
因此,我认为,它用作内容类型标题中添加的那些“部分”的分隔符。
那么也许您可以在没有enctype的情况下发出Post请求?正如其他人所提议的。