Javascript 快速从按钮名称返回空EJS值
TLDR:我试图使用express(ex body parser module)获取按钮的名称值,但是idk为什么代码在我的按钮的name属性中返回空字符串 详细说明:我正在为todo list应用程序生成两个不同的列表,因此我尝试使用listTitle ejs值将新任务发送到正确的列表,因为该值返回一个空字符串,它们都发布在同一个列表上。最让我困惑的是,在页面的h1中,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
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是用用户输入的新任务定义项值。