[英]How to post dropdown value in Node.js to MySQL database with EJS?
在我的Node.js項目中,我有一個發布功能,可以將數據寫入MySQL數據庫。 我想在添加頁面上添加一些值作為下拉菜單。 目前,我只能將帶有文本字段的所有數據寫入MySQL數據庫。
我已經創建了下拉列表,但是使用這些下拉列表我只能顯示相應表中的數據,但是無論我嘗試了什么,都不會應用post函數中的選定值。
GET和POST功能:
app.get('/add', function(req, res, next) {
connection.query("SELECT DISTINCT platform_platform FROM platform; SELECT DISTINCT art_art FROM art;", [1, 2], function (error, result, fields) {
if(error) {
req.flash('error', error)
res.render('games/add', {
data: ''
})
} else {
res.render('games/g-add', {
data: result[0],
data1: result[1],
g_name: '',
g_status: ''
})
}
});
})
app.post('/add', function(req, res, next) {
req.assert('g_name').notEmpty()
req.assert('g_status').notEmpty()
var errors = req.validationErrors()
if( !errors ) {
var game = {
g_name: req.sanitize('g_name').escape().trim(),
g_status: req.sanitize('g_status').escape().trim()
}
connection.query('INSERT INTO games SET ?', game, function(err, result) {
console.log(err);
console.log(result.length);
if(err) {
req.flash('error', err)
res.render('games/g-add', {
g_name: game.g_name,
g_status: game.g_status
})
} else {
res.render('games/g-add', {
g_name: '',
g_status: ''
})
}
})
}
else {
var error_msg = ''
errors.forEach(function(error) {
error_msg += error_msg + '<br>'
})
req.flash('error', error_msg)
res.render('games/g-add', {
g_name: req.body.g_name,
g_status: req.body.g_status
})
}
})
EJS:
<form action="/games/add" method="post">
....
<div class="form-group">
<h4>Platform</h4>
<select class="custom-select">
<% for (var i = 0; i < data.length; i++) { %>
<option>
<%= data[i].platform_platform %>
</option>
<% } %>
</select>
</div>
....
<div class="form-group">
<label class="col-form-label" for="inputDefault">Name:</label>
<input type="text" class="form-control" id="inputDefault" value="<%= g_name %>">
</div>
....
<input type="submit" value="POST" class="btn btn-danger">
</form>
我只知道POST函數中不包含兩個下拉列表,但是我不知道如何將所選數據獲取到POST函數中。
您必須在select
添加name
屬性。 例如:
<div class="form-group">
<h4>Platform</h4>
<select name="platform" class="custom-select">
<% for (var i = 0; i < data.length; i++) { %>
<option>
<%= data[i].platform_platform %>
</option>
<% } %>
</select>
</div>
現在,在發布功能中,您可以從請求對象訪問選定的選項。
app.post('/add', function(req, res, next) {
....
var platform = req.body.platform;
....
})
您應該在“名稱”輸入中執行相同的操作,因為它也缺少name
屬性。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.