Предисловие: я пишу веб-приложение с использованием Node.js, Express и MongoDB.
При нажатии кнопки я пытаюсь передать параметр через URL из моего index.ejs
в контроллер ExpressItemController.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, однако онвозвращается как неопределенный.Я также попробовал методы в ссылках ниже безрезультатно.Что я должен сделать, чтобы достичь этого?Есть ли лучший способ сделать это?
Ранее пробовал
Как получить переменные GET (строка запроса) в Express.js на Node.js?
Как получить доступ к параметрам GET после "?"в экспрессе?