javascript - 访问隐藏字段数组值时出现问题

标签 javascript node.js ejs

我在访问 Node JS 中的隐藏字段值时遇到问题。我试图在 ejs 中提交表单时将数组作为隐藏字段值传递,然后尝试在表单提交时调用的 NodeJS POST 方法中访问该数组。

这就是我的数组“itm_mdf”的样子

[{"name":"零可乐","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: Unexpected end of JSON input。

您能否让我知道我在这里做错了什么以及我需要做什么来解决这个问题。

最佳答案

该值不带引号:

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

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

关于javascript - 访问隐藏字段数组值时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58035308/

相关文章:

node.js - ./node_modules/css-loader 中的错误? : ENOENT: no such file or directory node_modules/node-sass/vendor

node.js - EJS 脚本和样式表部分

angularjs - 获取 EJS 模板中项目的 Id 并注入(inject)到服务中

javascript - 当内循环完成工作后停止外循环运行

javascript - 如何在 D3 中沿 X 轴设置自定义刻度?或命名条形图中的条形?

c# - javascript 正则表达式的正则表达式

javascript - 如何替换两个特定元素之间的一些 HTML 标签?

node.js - JSON.parse() 在没有任何数据的情况下导致错误

javascript - 使用jquery `.attr`添加多个id导致错误

angularjs - 如何将参数从nodejs传递到angularjs Controller ?