• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

question-closed Problem z node.js i metodą POST

Object Storage Arubacloud
0 głosów
313 wizyt
pytanie zadane 12 maja 2020 w JavaScript przez Allen Obywatel (1,010 p.)
zamknięte 16 maja 2020 przez Allen

W  ramach nauki tworzę aplikację dodającą książki do biblioteki. Korzystam z node, express, ejs oraz express-ejs-layouts. Będąc na stronie startowej użytkownik wybiera opcję dodania nowej książki. Wpisując adres url ręcznie np. http://localhost:5000/add wszystko działa poprawnie (ładuję się kolejna strona aplikacji). Jednak po naciśnięciu na konkretny element, którego zadaniem jest dodanie kolejnej książki pojawia się problem:

Zamieszczam kod z pliku app.js:

const express = require('express');
const expressLayouts = require('express-ejs-layouts');

const app = express();

app.use(expressLayouts);
app.set('view engine', 'ejs');
app.use(express.static(__dirname + '/views'));

app.use('/', require('./routes/index'));
app.use('/add', require('./routes/index'));
app.use('/library', require('./routes/index'));

const PORT = process.env.PORT || 5000;

app.listen(PORT, console.log(`Server started on port ${PORT}`));

index.js w folderze routes:

const express = require('express');
const router = express.Router();

router.get('/', (req, res) => res.send('hello world'));
router.get('/add', (req, res) => res.render('add'));
router.get('/library', (req, res) => res.render('library'));

module.exports = router;

index.ejs w folderze views:

<form action="/add" method="POST" class="left-side">...</form>

oraz mainPage.js w folderze views:

const leftSide = document.querySelector('.left-side');

leftSide.addEventListener('click', () => { leftSide.submit() });

 

komentarz zamknięcia: Otrzymałem odpowiedź

1 odpowiedź

+1 głos
odpowiedź 12 maja 2020 przez Comandeer Guru (601,590 p.)
wybrane 16 maja 2020 przez Allen
 
Najlepsza

Dodałeś jedynie obsługę żądania GET. Żeby dodać obsługę POST musisz użyć albo dodatkowo router.post, albo router.all.

komentarz 12 maja 2020 przez Allen Obywatel (1,010 p.)
Rozumiem to tak, że w pliku index.js obsługa get() powoduje wykonanie res.render(). Czy to nie powinno działać i jeśli nie to dlaczego?
komentarz 12 maja 2020 przez Comandeer Guru (601,590 p.)
Nie powinno, bo to jest obsługa żądania GET, a formularz wysyłasz POST – a takiego żądania nie obsługujesz.
komentarz 13 maja 2020 przez Allen Obywatel (1,010 p.)

Pod tym linkiem https://github.com/bradtraversy/node_passport_login znajduje się repozytorium z kodem z filmu na youtube. Nie ma tam żadnej obsługi .post, jedynie .get() oraz .render(), a strona funkcjonuje poprawnie. Chcę po prostu zrozumieć dlaczego akurat ten kod działa.

komentarz 13 maja 2020 przez Allen Obywatel (1,010 p.)

Faktycznie, dzięki za pomoc. Mam jeszcze jedno pytanie. W jaki sposób mogę rozróżnić, który z tagów form jest submitowany. Mówię o sytuacji, w której na stronie startowej mam 2 divy, wykonujące po naciśnięciu myszką 2 różne funkcje. 

<form action="/add" method="POST" class="left-side">
                <div class="add-new">... </div>
            </form>
            <form action="/library" method="POST" class="right-side">
                <div class="show-library">... </div>
            </form>

 

komentarz 14 maja 2020 przez Comandeer Guru (601,590 p.)

Można im zrobić np. różne input[type=hidden], które by pokazywały, z jakiego formularza idzie żądanie.

komentarz 16 maja 2020 przez Allen Obywatel (1,010 p.)
Dzięki

Podobne pytania

0 głosów
0 odpowiedzi 86 wizyt
pytanie zadane 6 listopada 2022 w JavaScript przez Mefyra Nowicjusz (190 p.)
0 głosów
0 odpowiedzi 211 wizyt

92,584 zapytań

141,434 odpowiedzi

319,671 komentarzy

61,968 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...