Wie wird der Wert im Dropdown-Menü von der EJS-Vorlage zum serverseitigen Knoten ausgewählt?
Was ich tun möchte, ist, den Benutzer monatlich auswählen zu lassen, dh so etwas wie feb2017 aus einem Dropdown-Menü, und dann den ausgewählten Wert auf der Serverseite abzurufen, wo ich die Auswahl verwenden werde, um die Datenbank zu durchsuchen, in der month_year = feb2017, month_year ist eine Spalte in meiner Datenbanktabelle.
Aber jetzt möchte ich nur die Option auf der Serverseite auswählen lassen. Ich benutze Node Js, Express sowie Body Parser.
Also, wie gehe ich vor?
Hier ist meine EJS-Datei
<!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>
und hier ist die zugehörige Serverseite.
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);
});
würde gerne wissen, wie man die Option von ejs auf die Serverseite auswählt
Angenommen, Sie möchten unterschiedliche month_year
Werte in rows
(CMIIW) haben, würde ich Ihnen zunächst empfehlen, die SQL-Abfrage zu ändern, um die Komplexität in der Ansicht zu verringern:
SELECT DISTINCT month_year FROM attendance_details ORDER BY month_year ASC
Dann können Sie dies verwenden, um Ihr Formular zu generieren:
<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>
und verarbeiten Sie es auf der Serverseite:
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)