首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从下拉到显示表nodejs获取值

从下拉到显示表nodejs获取值
EN

Stack Overflow用户
提问于 2017-12-27 17:26:49
回答 2查看 2K关注 0票数 2

所以我正在学习nodejs和mongodb。我的应用程序的后端使用的是高速公路和mongojs,前端是ejs。我想要做的是,用户将从下拉列表中选择查看可用的类列表,类列表将显示在表中。例如,如果用户选择全部,数据库中的所有类都将显示在表中。我不确定如何从下拉菜单中获取值,并以表形式显示来自mongodb的数据。这就是我到目前为止得到的错误:错误:无法在发送后设置标头。

admin.js

代码语言:javascript
运行
复制
router.get('/showclass', function(req, res) {
   res.render('showclass');
});
router.post('/showclass', function(req, res) {
    var selectValue = req.body.table;
    if(selectValue == 'all') {
         console.log('All is selected');
         db.classes.find().forEach(function(err, doc) {
            if(err) {
            res.send(err);
            } else {
                res.send(doc);
                res.render('showclass');
            }
        });
    }
});

ejs

代码语言:javascript
运行
复制
<%- include('includes/header') %>
<%- include('includes/navbar') %>

<form method="post" action="/admin/showclass">
<table class="table table-bordered">
  <label>Show Table By:</label>
  <select>
    <option value="all">All</option>
    <option value="recent">Recent</option>
    <option value="opel">Opel</option>
    <option value="audi">Audi</option>
  </select>
  <tr>
      <th>Class Name</th>
      <th>Class Time</th>
      <th>Duration</th>
      <th>Instructor</th>
      <th>Maximum Students</th>
      <th>Brief Description</th>
      <th></th>
  </tr>
  <tr>
      <td>Data</td> 
      <td>Data</td>
      <td>Data</td>
      <td>Data</td>
      <td>Data</td>
      <td>Data</td>
      <td><a href="editclass">Edit</a>/Delete</td>
  </tr>
<button type="submit" class="btn btn-default">Submit</button>
</table>
</form>

<%- include('includes/footer') %>
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-12-27 17:49:43

res.sendres.render都做同样的事情,它们向用户发送响应,您不能同时使用它们,删除res.send(doc)并将数据传递给render方法。

代码语言:javascript
运行
复制
router.get('/showclass', function(req, res) {
   res.render('showclass');
});
router.post('/showclass', function(req, res) {
    var selectValue = req.body.table;
    if(selectValue == 'all') {
         console.log('All is selected');
         db.classes.find().forEach(function(err, doc) {
            if(err) {
                res.send(err);
            } else {
                res.render('showclass', { doc: doc });
            }
        });
    }
});

看看特快文档

票数 1
EN

Stack Overflow用户

发布于 2017-12-27 18:34:55

对于相同的请求,不能同时调用res.sendres.render

您可以在第二个参数中将上下文传递给render函数:

代码语言:javascript
运行
复制
res.render('showclass', doc);

参考资料:http://expressjs.com/en/guide/using-template-engines.html

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47996251

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档