簡體   English   中英

單擊按鈕將參數傳遞給Express控制器

[英]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抓取參數,但是它以未定義的形式返回。 我也嘗試了以下鏈接中的技術,但均無濟於事。 我應該怎么做才能做到這一點? 有沒有更好的方法來解決這個問題?

以前嘗試過

如何在Node.js上的Express.js中獲取GET(查詢字符串)變量?

如何在“?”之后訪問GET參數? 在快遞?

 $('#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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM