访问隐藏字段数组值时遇到问题

时间:2019-09-20 21:20:13

标签: javascript node.js ejs

我在访问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输入意外结束。

请让我知道我在这里做错了什么以及解决该问题所需要做的事情。

1 个答案:

答案 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)%'>

最佳解决方案是确保对值进行编码,以使呈现的数据中没有引号。