【问题标题】:EJS not displaying value if only single item passed如果仅通过单个项目,EJS 不显示值
【发布时间】:2020-08-31 01:32:18
【问题描述】:

在将值从 app.js 文件传递​​到 checkout.ejs 文件时,如果我选中多个复选框,所有关联的图像都会显示在结帐中。 ejs 页面,但如果我只按一个复选框来检索单个图像,它就不会发生。

这是我的 app.js

app.post("/data", uploads, function (req, res) {
User.findById(req.user.id, function (err, foundUser) {
    if (err) {
      console.log(err);
    } else {
      if (foundUser) {

res.render("checkout",{SIMG:req.body.checkbox});
      }
    }
  });
});

这是我的 checkout.ejs

  <%  for(var i=0; i<SIMG.length; i++){  %>
    <p> <img src="./uploads/<%=SIMG[i]%>" alt="image" width="300"></p>

   <%  } %>
      </body>
    </html>

在 app.js 中,req.body.checkbox 检索从其他页面中选择的所有图像的图像名称,我想在结帐页面中检索这些图像名称。 如果所选图像不止一个,但对于单个图像,工作正常

<img src="./uploads/<%=SIMG[i]%>" alt="image" width="300"> 

checkout.ejs 中的行连续运行而不显示图像。

【问题讨论】:

    标签: html node.js mongodb ejs


    【解决方案1】:

    我猜你在选择多个复选框时会得到数组,但是当你选择一个复选框时它只会给出价值,这就是它不起作用的原因。如果你得到单个值,也只需转换为数组,如下代码所示

    app.post("/data", uploads, function (req, res) {
    User.findById(req.user.id, function (err, foundUser) {
        if (err) {
          console.log(err);
        } else {
          if (foundUser) {
            // you can put more validation if you want, for empty or any other syntax
            if (Array.isArray(req.body.checkbox)) {
              res.render("checkout",{SIMG: req.body.checkbox});
            } else {
              res.render("checkout",{SIMG: [req.body.checkbox]});
            }
          }
        }
      });
    });
    

    【讨论】:

    • 再次感谢您,一切正常。 :)
    • 乐于助人:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-31
    • 1970-01-01
    • 1970-01-01
    • 2018-06-01
    相关资源
    最近更新 更多