Javascript 快速从按钮名称返回空EJS值

Javascript 快速从按钮名称返回空EJS值,javascript,node.js,express,ejs,Javascript,Node.js,Express,Ejs,TLDR:我试图使用express(ex body parser module)获取按钮的名称值,但是idk为什么代码在我的按钮的name属性中返回空字符串 详细说明:我正在为todo list应用程序生成两个不同的列表,因此我尝试使用listTitle ejs值将新任务发送到正确的列表,因为该值返回一个空字符串,它们都发布在同一个列表上。最让我困惑的是,在页面的h1中,ejs标记工作得非常好 这是我的服务器代码: const express = require("express&qu

TLDR:我试图使用express(ex body parser module)获取按钮的名称值,但是idk为什么代码在我的按钮的name属性中返回空字符串

详细说明:我正在为todo list应用程序生成两个不同的列表,因此我尝试使用listTitle ejs值将新任务发送到正确的列表,因为该值返回一个空字符串,它们都发布在同一个列表上。最让我困惑的是,在页面的h1中,ejs标记工作得非常好

这是我的服务器代码:

const express = require("express");
const date = require(__dirname + "/date.js");

const app = express();
app.set("view engine", "ejs");

app.use(express.urlencoded({ extended: true }));
app.use(express.static("public"));

let items = [];
let workItems = [];

app.get("/", function (req, res) {
  let day = date.getDate();

  res.render("list", {
    listTitle: day,
    newListItems: items,
  });
});

app.get("/work", function (req, res) {
  res.render("list", { listTitle: "Work", newListItems: workItems });
});

app.post("/", function (req, res) {
  var item = req.body.newItem;
  console.log(req.body);

  if (req.body.list === "Work") {
    workItems.push(item);
    res.redirect("/work");
  } else {
    items.push(item);
    res.redirect("/");
  }
});

app.get("/about", function (req, res) {
  res.render("about");
});

app.listen("3000", function () {
  console.log("Server started on port 3000");
});
<%- include('header'); -%> 

    <div class="box" id="heading">
      <h1><%= listTitle %></h1>
    </div>

    <div class="box">
          <% for ( var i=0; i<newListItems.length; i++) { %>
      <div class="item">
        <input type="checkbox">
        <p><%= newListItems[i] %></p>
      </div>
      <% } %>

 
    <form class="item" action="/" method="POST">
      <input type="text" name="newItem" placeholder="New task" autocomplete="off" />
      <button type="submit" name="name" value="<% listTitle %>">+</button>
    </form>
  </div>

  </body>

<%- include('footer'); -%> 
这是我的前端:

const express = require("express");
const date = require(__dirname + "/date.js");

const app = express();
app.set("view engine", "ejs");

app.use(express.urlencoded({ extended: true }));
app.use(express.static("public"));

let items = [];
let workItems = [];

app.get("/", function (req, res) {
  let day = date.getDate();

  res.render("list", {
    listTitle: day,
    newListItems: items,
  });
});

app.get("/work", function (req, res) {
  res.render("list", { listTitle: "Work", newListItems: workItems });
});

app.post("/", function (req, res) {
  var item = req.body.newItem;
  console.log(req.body);

  if (req.body.list === "Work") {
    workItems.push(item);
    res.redirect("/work");
  } else {
    items.push(item);
    res.redirect("/");
  }
});

app.get("/about", function (req, res) {
  res.render("about");
});

app.listen("3000", function () {
  console.log("Server started on port 3000");
});
<%- include('header'); -%> 

    <div class="box" id="heading">
      <h1><%= listTitle %></h1>
    </div>

    <div class="box">
          <% for ( var i=0; i<newListItems.length; i++) { %>
      <div class="item">
        <input type="checkbox">
        <p><%= newListItems[i] %></p>
      </div>
      <% } %>

 
    <form class="item" action="/" method="POST">
      <input type="text" name="newItem" placeholder="New task" autocomplete="off" />
      <button type="submit" name="name" value="<% listTitle %>">+</button>
    </form>
  </div>

  </body>

<%- include('footer'); -%> 

您的
中是否缺少
=
?是不是应该是
(类似于你的
h1
)?你是对的,但它没有解决我的问题:(是
应用程序中的
POST
要发送到后端的
值(“/”)..
您正在调用
var item=req.body.newItem;
。这意味着“感谢您的回复!这让我意识到我需要将按钮的名称更改为list(似乎在某个时候忘记了这样做)。”.正如您所说,我正试图使用listTitle让后端计算新输入应保存在哪个列表中。var item=req,body.newItem是用用户输入的新任务定义项值。