如何从ejs模板到服务器端节点的下拉菜单中选择值

时间:2017-03-02 06:49:56

标签: javascript node.js ejs

我想要做的是让用户从下拉菜单中选择monthyear,例如feb2017,然后将选中的值输入到服务器端,我将使用选择来搜索数据库,其中month_year = feb2017 ,month_year是我数据库表中的一列。

但是,现在我只想将选项选择到服务器端。我正在使用节点js,express和body解析器。

那么,我该怎么做呢?

这是我的ejs文件

<!DOCTYPE HTML>
<html>
<head>
    <title>Add/Edit DA</title>

    <link rel="stylesheet" href="style.css">
</head>
<body>
    <% var rows %>
    <% var rowsLength = rows.length %>


<div>
    <form id="tableForm" action="/salary-sheet" method="post">
    <select class="selectpicker" data-style="btn-info" name="selectpicker">
        <optgroup label="Select Table">
            <option name="" value="0">Select Month Year</option>
            <% for(var i=0;i<rowsLength;i++){ %>
            <% if(i>0){ %>
            <% if(rows[i].month_year !== rows[i-1].month_year){ %>
            <option name="table<%=i %>"  value="month1"><%= rows[i].month_year %></option>
            <% } %>

            <% }else{ %>
            <option name="table<%=i %>"  value="month2"> <%= rows[i].month_year %></option>
            <% } %>
            <% } %>
        </optgroup>
    </select>
    <input type="submit" />
</form>
    Go back to home page - <a href="/">click here</a>
</div>


</body>


</html>

这是相关的服务器端。

app.get('/select-month',function(req,res){
    connection.query('SELECT month_year FROM attendance_details',function(err,rows){
        if(err){
            throw err;
        }else{

            var rowsLength = rows.length;
            console.log('rows is ',rows);

            res.render('select-month.ejs',{rows:rows});
        }
    });


});

app.post('/salary-sheet',function(req,res){
    var month = req.body.table8;
    console.log('month is ',month);
    res.send(month);
});

很想知道如何从ejs到服务器端选择选项

1 个答案:

答案 0 :(得分:3)

首先,假设您希望在month_year(CMIIW)中包含不同的rows值,我建议您更改SQL查询以降低视图中的复杂性:

SELECT DISTINCT month_year FROM attendance_details ORDER BY month_year ASC

然后您可以使用它来生成表单:

<form id="tableForm" action="/salary-sheet" method="post">
    <select class="selectpicker" data-style="btn-info" name="selectpicker">
        <optgroup label="Select Table">
            <option value="">Select Month Year</option>
            <% rows.forEach(function(row){ %>
            <option value="<%= row %>"><%= row %></option>
            <% }) %>
        </optgroup>
    </select>
    <input type="submit" value="Submit" />
</form>

并在服务器端处理它:

var express = require('express'),
    bodyParser = require('body-parser'),
    app = express()

app.set('view engine', 'ejs')
app.use(bodyParser.urlencoded({
  extended: true
}))

app.post('/salary-sheet',function(req,res){
    var month = req.body.selectpicker
    console.log('month is', month)
    res.send(month)
})

app.listen(5000)