我在访问Node JS中的隐藏字段值时遇到问题。我试图在ejs中提交表单时将数组作为隐藏字段值传递,然后尝试在NodeJS POST方法(在表单提交中调用)中访问该数组。
这是我的数组'itm_mdf'的样子
[{“ name”:“ COKE ZERO”,“ id”:“ 1048647”}]。
我将数组作为隐藏字段值传递如下
<form class="ui form" action="/items" method="POST">
<input type="hidden" name="modifiers" value=<%=JSON.stringify(itm_mdf)%>
<button class="btn btn-primary" type="submit">REORDER</button>
</form>
我正在像这样的Node JS post方法中访问数组
app.post("/items",function(req,res){
console.log('itm_mdf *******'+req.body.modifiers);
}
但是我看到数组值在Post方法中打印如下
itm_mdf ******* [{“ name”:“可乐
当我在Post方法中执行JSON.parse(req.body.modifiers)时,出现SyntaxError错误:JSON输入意外结束。
请让我知道我在这里做错了什么以及解决该问题所需要做的事情。
答案 0 :(得分:1)
该值未引用:
<input type="hidden" name="modifiers" value=<%=JSON.stringify(itm_mdf)%>
所以它应该这样呈现:
<input type="hidden" name="modifiers" value=[{"name":"COKE ZERO","id":"1048647"}]>
这使得value='[{"name":"COKE '
您需要使用引号,但是由于JSON使用双引号,因此您必须使用单引号,并希望您的数据中没有单引号:
<input type="hidden" name="modifiers" value='<%=JSON.stringify(itm_mdf)%'>
最佳解决方案是确保对值进行编码,以使呈现的数据中没有引号。