【发布时间】:2021-05-13 13:44:58
【问题描述】:
我有这个前端功能:
var finalSelValue = ""
function changeFunc() {
var selectBox = document.getElementById("selectBox");
var selectedValue = selectBox.options[selectBox.selectedIndex].value;
finalSelValue = selectedValue
fetch('/adminFilter', {
method: 'POST',
headers: {'content-type': 'application/json'},
body: JSON.stringify({
finalSelValue
})
})
}
然后在后端:
router.post('/adminFilter', auth.ensureAuthenticated, auth.roleCheck('ADMIN'), (req, res) => {
console.log("filter " + req.body.finalSelValue)
var query = "select * from tkwdottawa where STATUS = '" + req.body.finalSelValue + "'"
ibmdb.open(DBCredentials.getDBCredentials(), function(err, conn) {
if (err) return console.log(err);
conn.query(query, function(err, rows) {
if (err) {
res.writeHead(404);
}
for (var i = 0; i < rows.length; i++) {
console.log(rows[i])
}
res.render('AdminDash', {
page_title: "AdminDash",
data: rows
});
conn.close(function() {
console.log('done adminFilter');
});
});
});
})
它正确记录了循环所在的新值,但它没有使用新数据重新渲染页面!我该如何解决这个问题!
【问题讨论】:
-
fetch的有用之处在于它不会重新加载页面。如果您希望 POST 数据到服务器并使用响应重新加载整个页面,请使用 Javascript 加载FormData对象并提交它。或者您必须获取fetch返回的数据并以编程方式更新页面的相应部分。
标签: javascript sql node.js db2