为什么Post路由不接受变量值(使用express)?

时间:2018-01-19 19:00:01

标签: express web server routes ejs

这是我的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。

1 个答案:

答案 0 :(得分:0)

请在路线上进行修正。您需要在那里提供编译的名称

<form action="/<%= name %>/todo" method="POST">

通过ajax提交请求。作为发布请求后的页面刷新,它不会将数据返回显示。因此,您收到错误