javascript - ejs 表单重定向到 URL 的双份副本(express.js)

标签 javascript node.js express ejs body-parser

我是后端新手,在使用特快专递方法时遇到问题。 我创建了一个名为 new.ejs 的文件,其中包含一个重定向到 URL http://localhost:3000/campgrounds/ 的表单。

新的.ejs文件

<% include partials/header %>

    <h1>Create a new campground</h1>

    <form action="campgrounds" method="POST">
        <input type="text" name='name' placeholder="name" >
        <input type="text" name='image' placeholder="img-url">
        <button>Submit!</button>
    </form>

<% include partials/footer %>

我检查了我的index.js 文件,没有发现任何问题。但是当我单击“提交”按钮时,它会将我重定向到 http://localhost:3000/campgrounds/campgrounds 而不是 http://localhost:3000/campgrounds/

index.js 文件

const express = require('express');
const app = express();
const bodyParser = require("body-parser");

app.use(bodyParser.urlencoded({extended: true}));
app.set('view engine', 'ejs');

let campgrounds = [
    {name: "salmon creek", image: "https://pixabay.com/get/e837b1072af4003ed1584d05fb1d4e97e07ee3d21cac104491f4c278a7eeb1bc_340.jpg"},
    {name: "Granite Hill", image: "https://pixabay.com/get/e83db7082af3043ed1584d05fb1d4e97e07ee3d21cac104491f4c278a7eeb1bc_340.jpg"},
    {name: "Mountain Goat's Rest", image: "https://pixabay.com/get/ef3cb00b2af01c22d2524518b7444795ea76e5d004b0144591f3c079a4e9b1_340.jpg"}
]


app.get('/', (req, res) => {
    res.render('landing');
});

app.get('/campgrounds', (req, res) => {

    res.render("campgrounds", {campgrounds: campgrounds});
});

app.post('/campgrounds', (req, res) => {
  let name = req.body.name;
  let image = req.body.image;
  let newCampground= {name: name, image: image}
  campgrounds.push(newCampground);

  res.redirect('/campgrounds')
});

app.get('/campgrounds/new', (req, res) => {
    res.render('new')
});

app.listen(3000, () => {
    console.log('Now serving app listening on port 3000!');
});

我无法让这个 app.post 工作。但所有其他 app.get 方法都工作正常。

最佳答案

您需要在操作中添加前导斜杠。

<form action="/campgrounds" method="POST">

发生这种情况是因为仅使用 campgrounds 就会使其相对于您当前所在的路径,即 http://localhost:3000/campgrounds,因此它会将您发送到 http://localhost:3000/campgrounds/campgrounds

关于javascript - ejs 表单重定向到 URL 的双份副本(express.js),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53689287/

相关文章:

node.js - 使用HTTPS时redirect_uri_mismatch ://on Google App Engine

javascript - 选项卡打开时持续的 session 的身份验证逻辑

javascript - 合并数组中的对象而不覆盖不同的值属性

javascript - 数据导入 MySQL -> 值与无值

javascript - 使用 gulp 编译 Sass 失败

node.js - 如何使用不同版本的 Npm 和 Cordova

javascript - 无法在功能后停止快速服务器

javascript - 什么使 JavaScript 函数异步?

javascript - Node +回调函数传参

mysql - express.js 中的 API 删除方法错误