Js 函数参数取决于 EJS 中提交的值

Js function argument depend upon the submitted value in EJS

我正在构建一个快速应用程序。我有一个下拉列表,其提交的值被传递给 users.js 并启动 mongodb 查询。然后,该查询的结果被传递回 ejs 并成为脚本函数的参数。

问题是我希望在单击“提交”时调用该函数。 (我能承受页面渲染的延迟)。

现在,我有两个按钮,一个用于提交,一个用于调用该函数。

index2.ejs


    <form action="/users/details" method="POST">
      <fieldset>
      <select required class="selectpicker" name="selectpicker">
            <!-- options -->
        </select>
        
      <input type="submit" id="submit-form" />
      </fieldset>
  </form>


  <button onclick="popu(<%= JSON.stringify(coun) %>);">blue</button>

users.js

router.get("/index2", function(req, res, next) {

  (async function() {
      count = await funcoun(coll); // a mongodb query
      res.render("index2", {title: 'some data', userdataa: a, imgsrc : coll, coun : count});
    }) ();
});

router.post("/details", function(req, res, next) {
    coll = req.body.selectpicker;
    res.redirect("/users/index2");
})

所以,基本上我希望表单传递值(coll)来表达,计算count,用这个值调用函数,然后渲染页面。

目前,count的计算是在旧值的基础上完成的,当点击blue按钮时,然后是当前值。

我很困惑,如果我把 onclick 放在提交按钮中,它会做什么,因为尚未计算 coun。

<body onload = "popu(<%= JSON.stringify(coun) %>);">

解决了问题