[英]Pass parameter to Express controller from button click
前言:我正在使用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>
在包含其他功能的外部Javascript文件中, 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和歷史記錄,而無需實際請求。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.