Wie wird der Wert im Dropdown-Menü von der EJS-Vorlage zum serverseitigen Knoten ausgewählt?


faraz

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

John Gultom

Angenommen, Sie möchten unterschiedliche month_yearWerte 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)

Verwandte Artikel


Angular - Wie wird der Wert im Dropdown-Menü ausgewählt?

angleUr Ziel : Ich möchte, dass der Benutzer auf einen Wert in einer Dropdown-Liste klickt, der die Adresse der Site, auf der er sich befindet, basierend auf der Auswahl ändert. Problem : Ich konnte es dazu bringen, die Adresse zu ändern, aber es würde es tun,

Wie wird der Wert auf einer anderen Seite ausgewählt?

riya Ich habe Dropdown-Liste, um ein Formular zu bearbeiten. Alle ISBN-Datensätze werden in der Dropdown-Liste aufgelistet. Der Benutzer wählt die ISBN aus, die er aktualisieren möchte. Wie erhalte ich nun, welcher ISBN-Datensatz von diesem Benutzer ausgewählt