javascript - req.body.Dates 未定义
问题描述
我有 2 个使用 SQL Server 动态填充的下拉菜单。根据所选项目,我正在加载不同的 ejs 模板。我在 AJAX 的帮助下完成了这项工作。但是,我希望能够根据所选标准加载数据。例如,如果DD1
选择 asAndrew
和DD2
asDate
表应根据这些条件加载 7 列。
又名
SELECT * FROM exTable x WHERE x.Name = 'Andrew' and x.Date = '4/22/2019'
我已经尝试过将下拉列表中的选定项目传递给路由器,如下所示:
路由器.js
router.post('/selection', async (req, res) =>{
try {
var nameFromDB = await conn.query("SELECT DISTINCT pr.Name FROM WFS.Table1 pr WHERE pr.Group = 'Test'");
var dateFromDB = await conn.query('SELECT r.Date FROM WFS.Table2 r');
var tables = ("SELECT * FROM WFS.view v WHERE v.Date= '" + req.body.Dates + "' AND v.Name = '" + req.body.Names + "'");
console.log("SELECT * FROM WFS.view v WHERE v.Date= '" + req.body.Dates + "' AND v.Name = '" + req.body.Names + "'");
res.render('selection', {tables: tables, nameFromDB : nameFromDB , dateFromDB: datesFromDB});
}
catch (err) {
res.status(500)
res.send(err.message)
}
});
这是的输出console.log
:
SELECT top 100 * FROM WFS.view_workRequests_Extended v WHERE v.Revenue_Release_Id = '04/16/2019' AND v.Development_Manager = 'Andrew'
应用程序.js
var bodyParser = require('body-parser');
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({
extended: true
}));
app.use('/', router);
索引.ejs
<script>
$(document).ready(function() {
$('#DDD').on('change', function(event) {
var selectedDate = $('#selections option:selected').val();
});
$('#DDN').on('change', function(event) {
var selectedName = $('#selection option:selected').val();
});
$('#submitData').on('submit', function(e){
e.preventDefault();
$.ajax({
type: "POST",
url: "/selection",
data: {selectedDate : selectedDate, selectedName : selectedName },
success: function() {
alert('success');
}
});
});
});
</script>
<form action="/selection" method="POST">
<select class="DateDD" id="DDD" name="Dates">
<% for(var n=0; n < dateFromDB.recordset.length; n++) { %>
<option><%= dateFromDB.recordset[n].Date%></option>
<% } %>
</select>
<select class="NameDD" id="DDN" name="Names">
<% for(var n=0; n < nameFromDB.recordset.length; n++) { %>
<option><%= nameFromDB.recordset[n].Name%></option>
<% } %>
</select>
<input type="submit" name="Submit" id="submitData" class="btn btn-primary" value="View Report" />
</form>
选择.ejs
包含与 INDEX.EJS 相同的内容(除了脚本标签)并且...
<table class="table table-bordered table-condensed table-striped">
<% for(var n=0; n < tables.recordset.length; n++) { %>
<tr>
<td><%=tables.recordset[n].Name%></td>
<td><%=tables.recordset[n].Date%></td>
....
....
</tr>
<% } %>
</table>
在index.ejs
此错误上提交表单后被抛出:
日期未定义
我不知道是什么导致了这个错误,因为我可以在控制台中看到正在打印的名称和日期。任何帮助将不胜感激,谢谢!
解决方案
您已经拦截onsubmit
了事件并修改了names
通过发送的数据ajax
$.ajax({
type: "POST",
url: "/selection",
data: {selectedDate : selectedDate, selectedName : selectedName }, // <-- here
success: function() {
alert('success');
}
});
所以你在你的req.body
. 您应该改为:
// for date
req.body.selectedDate
// for name
req.body.selectedName
你也声称
我可以在控制台中看到名称和日期
您放置的控制台输出与相关代码中的查询不匹配。
推荐阅读
- c - 我不知道冒号和问号在这段代码中是如何工作的
- python - 如何为回归创建条件非对称目标函数?
- pandas - Pandas - 使用 map 和 lambda 将 id 更改为字符串
- javascript - React:如何从具有动态高度的子项中获取元素的参考高度?
- python - Kivy:自定义按钮不随 self.state 更改而更新
- react-native - 令人困惑的 React Native 语法
- ios - `user_version 的 SQLite 文档中的“偏移 60 处的整数”是什么意思?语用`
- google-sheets - 如何在谷歌表格中创建质量分数
- javascript - 使用钩子测试有状态的 React 组件时出现意外结果?(笑话)
- javascript - 如何在仅具有“子”数组的一个标识属性的数组中查找对象的 ID