我正在尝试检索select标签下所选选项的值.Below是我的ejs文件的片段,我使用node.js Express框架作为服务器端语言。以下是食品的选项。选择选项后,必须按数据库中的价格提取文本字段。为了显示所选食品的价格,我首先要求所选商品的价值。这是我被卡住的部分。我不知道如何在选择项目时立即触发事件。谁能帮我吗?提前致谢。 这是我正在使用的HTML文件: -
<!DOCTYPE html>
<html>
<head>
<title>Dashboard</title>
</head>
<body>
<form action="/bill" method="post">
<div class="dropdown">
<select id="foodItem0">
<option></option>
<option value="veg_hak_nood">Veg Hakka Noodles</option>
<option value="alo_par">Aloo Paratha</option>
<option value="pan_par">Panner Paratha</option>
</select>
<div class="text"><input type="text" id="rate" name="rate" size="2"
readonly value="0"></div>
<div class="btn">
<button type="button" id="submit" onclick="submit()">Submit</button>
<button type="button">Reset</button>
</div>
</div>
<script>
document.getElementById('submit').onclick=function(){
rate.value=foodItem0.value;
}
</script>
</form>
</body>
</html>
以下是app.js文件: -
const mysql = require('mysql'),
express = require('express'),
path = require('path'),
parser = require('body-parser'),
router = express.Router();
var conn = mysql.createConnection({
host: "localhost",
user: "root",
password: "0440",
database: "kfc"
})
conn.connect(function(err){
if(err) throw err;
console.log("Database connected")
})
app = express();
app.use(parser());
app.use(express.static(path.join(__dirname, 'public')));
app.get('/login', function(req, res){
res.sendFile(__dirname + '/public/login.html');
})
app.get('/dashboard', function(req, res){
res.render('pages/dashboard.ejs')
})
app.post('/dashboard', function(req, res){
conn.query("select id from login where id = ? and pwd = ?", [req.body.login, req.body.pwd], function(err, result, fields){
console.log(result);
if(err) throw err;
if(result.length > 0){
res.redirect('/dashboard');
console.log("Credentials verified")
}else{
console.log("Credentials incorrect");
res.redirect('/')
}
})
})
app.post('/bill', function (req, res) {
console.log("Hello"); //statement not getting executed
//HERE I AM TRYING TO CATCH THE VALUE OF THE SELECTED OPTION AND PASS IT INTO A QUERY
});
app.listen(8080);
答案 0 :(得分:0)
您的表单元素必须具有名称属性才能自动执行表单提交。 但是,您必须具有触发表单提交的机制。您可以使用javascript或html执行此操作。
服务器端,您需要一个类似于下面的功能,在进行特定呼叫时将触发该功能。根据您提交请求的方式,您需要在req.url
作为参数或req.body
查找数据。
const http = require("http");
function request_handler(req, res){
let url_parts = url.parse(req.url, true);
console.log(url_parts)
console.log(req.body)
res.end(JSON.stringify("thanks for the request"))
}
const server = http.createServer(request_handler)
server.listen(80, (err)=>{
if(err) return console.log("error", err);
console.log("server listening on", port_num)
})
我试图回答你的问题。 但是要给出正确的答案,我们真的需要知道您如何提交表单以及您对服务器的请求类型。