首页 > 解决方案 > NodeJS获取表单没有返回任何东西

问题描述

我正在尝试从嵌套的表单中发送一些数据。我将提供代码并解释它。EJS:

<%if (projects[i].status == "Created") {%>
<td>
   <form method="get" action="/updateEngineer/<%=projects[i]._id%>">
      <select name="eng">
         <% for(var k = 0; k < engineers.length; k++){%>
         <option value="teeeest"> <%=engineers[k].local.email%></option>
         <%}%>
      </select>
      </br><a   type="submit"href="/updateEngineer/<%=projects[i]._id%>"class="btn btn-success">Update Engineer</a>
   </form>
</td>
<%}%>

我的服务器端:

router.get('/updateEngineer/(:id)', function(req, res, next){

      var o_id = new ObjectId(req.params.id).toString();
      console.log(req.body.eng);
      db.collection('projects').find({
        "_id": ObjectId(o_id).toString
      }).toArray(function(err, results) {

        for (var i = 0; i < results.length; i++) {

          if (results[i]._id == o_id) {

            console.log(results[i]);



            db.collection('projects').updateOne({
              "_id": results[i]._id
            }, {

              $set: {
                "engineerEmail": req.body.eng
              }

            }, function(err) {

              console.log("success");
              res.redirect('/projects');
            });
          }

        }
      });
 })

它成功调用了该程序,但是当我打印 req.body.eng 返回 undefined 并且当我打印 req.body 时它返回一个 {}。我不确定为什么它不起作用,所以对此的任何见解将不胜感激

标签: node.jsexpressejs

解决方案


您的表单方法GET会将表单数据作为 url 参数发送。您可以在路由处理程序中以req.query.

但是你应该使用POST方法来获取数据req.body


推荐阅读