You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Express的app.get中获取下拉选择框的选中值?

如何获取下拉框选中值并传入Express的GET请求?

嘿,我来帮你搞定这个问题!你目前的代码有几个关键小问题,咱们一步步调整就能实现需求:

首先,修正HTML部分的表单结构

你的下拉选择框需要放在<form>标签里,这样提交时才能把选中的值传递给Express路由。另外,<option>标签不需要加name属性,选中的值会通过<select>的name属性(也就是你设置的dc)来传递。修改后的HTML代码如下:

<form action="/myform" method="GET">
  <select id="dcVal" class="custom-select my-1 mr-sm-2" name="dc" required>
    <option selected value="">Choose...</option>
    <% data.forEach(function(datas){ %>
      <option value="<%= datas.xyz %>"><%= datas.xyz %></option>
    <% });%>
  </select>
  <!-- 别忘了加提交按钮,不然没法触发表单提交 -->
  <button type="submit" class="btn btn-primary">Submit</button>
</form>

然后,调整Express的路由逻辑

你现在用的是app.get,但却尝试从req.body里取参数——这是不对的!GET请求的表单参数会附加在URL的查询字符串里,所以应该用req.query来获取,而不是req.body(req.body是用来处理POST请求参数的)。修改后的Node.js代码:

var express = require('express');
var app = express();

app.get('/myform', function(req, res){
  // 从req.query里获取名为dc的参数
  var dcVal = req.query.dc;
  res.send('Your selected value: ' + dcVal);
});

app.listen(3000, () => {
  console.log('Server is running on port 3000!');
});

额外补充:如果想用POST请求的情况

如果你更倾向于用POST方式传递参数(更适合敏感数据,参数不会暴露在URL里),可以这样改:

修改HTML的表单method

<form action="/myform" method="POST">
  <!-- 下拉框部分和之前一致 -->
  <button type="submit">Submit</button>
</form>

调整Express代码(需要配置body-parser)

var express = require('express');
var bodyParser = require('body-parser');
var app = express();

// 配置body-parser来解析表单格式的数据
app.use(bodyParser.urlencoded({ extended: false }));

app.post('/myform', function(req, res){
  // 这时就可以用req.body获取参数了
  var dcVal = req.body.dc;
  res.send('Your selected value: ' + dcVal);
});

app.listen(3000, () => {
  console.log('Server is running on port 3000!');
});

关键要点总结

  • GET请求的参数存在req.query中,POST请求的参数存在req.body中(POST需要配置body-parser)
  • 下拉框必须包裹在<form>标签内,指定正确的method和action路由
  • <select>的name属性是参数传递的关键,后端通过这个名称来获取值

内容的提问来源于stack exchange,提问作者Sohan Haspula

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 08:46:24