Форма ejs перенаправляет на двойную копию URL (express.js) - PullRequest
0 голосов
/ 09 декабря 2018

Я новичок в бэкэнде, и у меня возникают проблемы с работой метода экспресс-почты.Я создал файл с именем new.ejs, который содержит форму, перенаправляющую на URL http://localhost:3000/campgrounds/

файл new.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 %>

Я просмотрел свой индекс.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.get работают нормально.

1 Ответ

0 голосов
/ 09 декабря 2018

Вам необходимо добавить начальную косую черту к вашему действию.

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

Это происходит потому, что простое использование campgrounds делает его относительно пути, по которому вы сейчас находитесь, который будет http://localhost:3000/campgrounds,и поэтому он отправляет вас на http://localhost:3000/campgrounds/campgrounds.

...