Javascript 在Node.js和Pug中,从动态创建项的表单中获取信息

Javascript 在Node.js和Pug中,从动态创建项的表单中获取信息,javascript,html,node.js,forms,express,Javascript,Html,Node.js,Forms,Express,我正在尝试创建一个应用程序,让用户创建一个交易清单,而现在,当在主页上的表中选择清单时,我一直在删除清单。我有一个表单,我相信它将由从路由器传入页面的数组中的数据填充。但是,每当我尝试console.log以查看是否正在传递项目或是否可以接收数据时,我都会收到一个错误页面,该页面显示传递的输入(选定)未定义。在node.js/express中我是否遗漏了什么,或者这是否可能 下面是帕格页面上的代码,其中的表单用于创建列表的表单和表格 mixin getLists(listings) ea

我正在尝试创建一个应用程序,让用户创建一个交易清单,而现在,当在主页上的表中选择清单时,我一直在删除清单。我有一个表单,我相信它将由从路由器传入页面的数组中的数据填充。但是,每当我尝试console.log以查看是否正在传递项目或是否可以接收数据时,我都会收到一个错误页面,该页面显示传递的输入(选定)未定义。在node.js/express中我是否遗漏了什么,或者这是否可能

下面是帕格页面上的代码,其中的表单用于创建列表的表单和表格

mixin getLists(listings)
    each item in listings
        tr
            td.listcell
                   input(type="checkbox" name="selected" value=item.numID)
            td.listcell #{item.name}
            td.listcell #{item.data}

block.content
    .holder
        .listtable
            h4.title Current Listings:
            form(method="post" action="/deleteListings")
                table.listings
                    tr
                        td.listcell
                        td.listcell Name
                        td.listcell Status
                        td.listcell Data
                        +pullinglists(lists)
                input(type="submit" value="Delete Selected Listings")
下面是我的路由器中的代码,用于处理将列表推送到仪表板和尝试将其删除的问题

const express = require('express');
const User = require('../core/user');
const router = express.Router();
const nodemailer = require('nodemailer');
const user = new User();

var listings = [];

router.get('/dashboard', (req, res, next)=> {
    let user = req.session.user;

    if(user)
    {
        res.render('dashboard', {opp:req.session.opp, name:user.username, listings:listings});
        return;
    }
    res.redirect('/');
});

router.post('/generateListing', (req, res, next)=>{
    if(req.body.name == null)
    {
        res.redirect('/dashboard');
    }
    var temp={name : req.body.name,
        status: "Pending",
        otherData: req.body.data,
        numID: numberID
    };
    numberID++;
    listings.push(temp);
    res.redirect('/dashboard');
});

router.post('/deleteListing', (req, res, next)=>{
    var i;
    console.log(selected.value);
    if(req.body.selected != null)
    {
        for(i=0; i<req.body.selected; i++)
        {
            //remove selected items from the array
        }
    }
    res.render('/dashboard');
});
应该是的

console.log(req.body.selected.value);
这将引导我删除表单条目

if(req.body.selected != null)
{
    var i;
    for(i=0; i<req.body.selected.length; i++)
    {
        var elementToBeDeleted = listings.indexOf(req.body.selected[i]);
        listings.splice(elementToBeDeleted, 1);
    }
}
res.redirect('/dashboard');
if(req.body.selected!=null)
{
var i;

对于(i=0;i您在模板中有以下内容:

form(method="post" action="/deleteListings")
因此,我希望在服务器端看到一些以此开头的代码:

router.post('/deleteListings', (req, res, next) => {
否则,表格将张贴到哪里

编辑:您想在调用
应用程序之前添加此项。请收听

app.use(express.json())
这样,您就可以访问
req.body
,并获得一个对象,其中包含从表单发送的所有字段名和值


您可能还需要将
application/x-www-form-urlencoded
设置为表单中的
内容类型
,我不确定默认值是什么,但这是我使用的。

;这会抛出一个500错误,并弹出一个页面,显示未定义selected。yes“selected.value”未定义,“req.body.selected”来自表单查看我在编辑中添加的内容,我认为它将解决该问题。
app.use(express.json())