使用node.js访问select标记中所选选项的值

时间:2017-11-19 11:40:47

标签: node.js express

我正在尝试检索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);

1 个答案:

答案 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)
})

我试图回答你的问题。 但是要给出正确的答案,我们真的需要知道您如何提交表单以及您对服务器的请求类型。