前言:我正在使用 Node.js、Express 和 MongoDB 编写 Web 应用程序。
单击按钮时,我试图通过 URL 将参数从 myindex.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 中获取参数,但是它返回未定义。我也尝试了以下链接中的技术无济于事。我应该怎么做才能做到这一点?有没有更好的方法来解决这个问题?
以前尝试过
$('#mainContent').load(page);
您请求的 URL 存储在page
变量中。
loadItems(page, subcategory)
... 定义为参数
onclick="loadItems(value, 'Scripting Languages')"
... 从 onclick 事件处理程序传递
value="/items/items"
...从该属性中获取值。
查询字符串未显示,因为您请求的 URL 不包含查询字符串!
您拥有的唯一查询字符串来自此处:
window.history.replaceState({}, '', "?subcat=" + subcategory);
... 修改浏览器地址栏中的 URL 和历史记录而不实际请求它。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句