这是我的app.js文件,我正在创建两个简单的Get和Post请求
var express = require("express");
var bodyParser = require("body-parser");
var app = express();
var todos = ["Water Plants", "Feed Zorro", "Buy Groceries", "Read Books"];
app.use(bodyParser.urlencoded({extended : true}));
app.use(express.static("public"));
app.set("view engine", "ejs");
app.get("/:name/todo", function(req, res){
var name = req.params.name;
res.render("home", {name : name, todos : todos});
});
app.post("/:name/todo", function(req, res){
var name = req.params.name;
var newTodo = req.body.newTodo;
todos.push(newTodo);
res.redirect("/:name/todo");
});
app.listen(3000);
这是我的home.ejs文件
<% include partials/header %>
<h1>Welcome <%= name %></h1>
<% for(var i = 0; i < todos.length; i++){ %>
<li><%= todos[i] %></li>
<% } %>
<form action="/:name/todo" method="POST">
<input type="text" name="newTodo" placeholder="Add Todo..."><br>
<button>Add Todo</button>
</form>
<% include partials/footer %>
每当我转到localhost:3000 / Jazz / todo时,html标题会显示“Welcome Jazz”,但当我尝试通过向列表中添加项目来发帖请求时,标题会变为“Welcome:name”但是它应该是相同的“欢迎爵士乐”。造成这种异常错误的原因是什么?解决方案是什么? 我正在使用的包是express,ejs,body-parser。
答案 0 :(得分:0)
请在路线上进行修正。您需要在那里提供编译的名称
<form action="/<%= name %>/todo" method="POST">
通过ajax提交请求。作为发布请求后的页面刷新,它不会将数据返回显示。因此,您收到错误