【发布时间】:2018-11-20 15:27:59
【问题描述】:
前言:我正在使用 Node.js、Express 和 MongoDB 编写一个 Web 应用程序。
当单击按钮时,我试图通过 URL 从我的 index.ejs 传递一个参数到 Express 控制器 ItemController.js,以便动态创建一组过滤的数据。
按钮在index.ejs中定义如下:
<button type="button" class="btn btn-primary" value="/items/items" onclick="loadItems(value, 'Scripting Languages')">
Scripting Languages
</button>
在我的包含杂项函数的外部 Javascripts 文件中,loadItems 执行以下操作:
function loadItems(page, subcategory) {
window.history.replaceState({}, '', "?subcat=" + subcategory); //set URL Param
$('#mainContent').load(page); //load item listing page into grid within HTML GridLayout
}
在此之后,路由器/控制器处理数据过滤和页面渲染:
路由器(item.js)
...
// Get all items
router.get('/items', item.items);
...
控制器 (ItemController.js)
...
// loads item listings
itemController.items = function(req, res) {
Item.find({}).exec(function (err, items) {
if (err) {
console.log("Error:", err);
}
else {
var URLSubcat = "Scripting Languages"; //this variable needs to change
var filtered = items.filter(function(el) {
return el.subcategory === URLSubcat;
});
res.render("../views/items/items", {items: filtered});
}
});
};
...
我尝试使用req.query.subcat 来尝试从 URL 中获取参数,但它返回为未定义。我也尝试了以下链接中的技术,但无济于事。我应该怎么做才能做到这一点?有没有更好的方法来解决这个问题?
以前尝试过
How to get GET (query string) variables in Express.js on Node.js?
【问题讨论】:
标签: javascript node.js express web-applications