Ich habe eine .EJS-Datei, die eigentlich eine Dropdown-Formular ist, die Daten mit SQLite3-Datenbank füllt. Nun, was ich tun möchte, ist, wenn ich einen Wert aus dem Dropdown auswählen, ich möchte es zurück zu meiner Javascript-Datei senden, wo ich es in der Datenbank speichern würde.Wie bekomme ich Wert von .ejs zu Javascript-Datei
Normalerweise war dies nicht hart auf eine Select-Anweisung, die ich selbst gemacht, aber wie diese Select-Anweisung aus Javascript gefüllt wird, ist der Wert, undefined, weiß nicht warum.
Um oben auf Beispiel zusammenzufassen:
Ich habe einen Benutzer, der angemeldet ist, und hat dann die Wahl ein Training auf einem Drop-Down zu speichern.
Workout Tisch
ID: 5
Name: Biceps
Ergebnis
Übung
ID: 1
Name: Biceps
Workout-ID: 5
Mein Code
Javascript
var Workout = bookshelf.Model.extend({
tableName: 'workout'
});
var Exercise = bookshelf.Model.extend({
tableName: 'exercise',
workout: function()
{
return this.hasMany(Workout)
}
});
router.get('/', function (req, res) {
new Vaje().fetchAll().then(function (workout) {
res.render('Exercise', { workout: workout });
}).catch(function (error) {
console.log(error);
});
});
Das alles aus Training der Daten sendet .ejs Tabelle in ausgewählte Form auf .ejs
.ejs Datei
<h2>Select workout</h2>
<select>
<% workout.forEach(function(w) { %>
<option id=""
<%=w.attributes.id%>">
<%= w.attributes.name %>
</option>
<% }); %>
</select>
<br></br>
<form method="post">
<input type="submit" value="Add workout" />
</form>
JavaScript-Datei
Diese Datei jetzt Wert erhalten ausgewählt sollte und es zu Datenbank speichern ...
router.post('/', function (req, res) {
var new_workout = req.body;
console.log("Workout: " + JSON.stringify(new_workout));
new Exercise().save(new_workout);
});
Ergebnis aus Konsole
Ich habe keine Ahnung, warum der Wert nicht definiert/leer ist, aber ich würde sicher gerne herausfinden.
Jede Hilfe wird sehr geschätzt!
UPDATE
UPDATE2
SOLUTION
router.post('/', function (req, res) {
new Vaje({ 'id': parseInt(req.body.naziv) })
.fetch()
.then(function (new_workout) {
if (new_workout != null)
new Trening().save({
vaje_id: new_workout.get("id"),
naziv: new_workout.get("naziv")
});
});
});
Versucht dies, aber es sagt immer noch "Erfolg": undefined. Auch ein Datensatz ist auf meine Datenbank festgelegt, aber es ist leer – aiden87
meine Antwort bearbeitet .. Haben Sie app.use (express.bodyParser()); zu deiner App? – Bonanza
Ich sollte es zuerst gefragt haben .. Welche Version von Express verwenden Sie? – Bonanza