Не удается отправить форму - ExpressJS - PullRequest
0 голосов
/ 29 сентября 2019

Я учу ExpressJS, я хочу выполнить вход в систему, но я дал мне этот Cannot POST / login im, используя метод post, почему он дал мне эту ошибку, здесь подробный пост, заранее спасибо за помощь

html part

<form method="POST">
  <div class="container">
    <label for="uname"><b>Username</b></label>
    <input type="text" placeholder="Enter Username" name="name" >
    <label for="psw"><b>Password</b></label>
    <input type="password" placeholder="Enter Password" name="password">
    <button type="submit">Login</button>
  </div>
</form>

The route.js

  router.post('/login'),(req,res)=>{
             var username= req.body.name;
             var password = req.body.password;
             con.query('SELECT * FROM authentication  WHERE username = ?',username, function (error, results, fields) {
             if (error) {
               // console.log("error ocurred",error);
               res.send({
                 "code":400,
                 "failed":"error ocurred"
               })
             }else{
               // console.log('The solution is: ', results);
               if(results.length >0){
                 if(results[0].password == password){
                   res.send({
                     "code":200,
                     "success":"login sucessfull"
                       });
                 }
                 else{
                   res.send({
                     "code":204,
                     "success":"username and password does not match"
                       });
                 }
               }
               else{
                 res.send({
                   "code":204,
                   "success":"username does not exits"
                     });
               }
             }
             });   
    }
module.exports = router

index.js

const express = require('express');
const app = express()
const bodyParser = require("body-parser");
const indexRouter = require('./routes/route')
const con = require('./models/db')
con.connect(function(err) {
    if (err) {
      return console.error('error: ' + err.message);
    }

    console.log('Connected to the MySQL server.');
  });
  app.use(bodyParser.urlencoded({
    extended: false
 }));
  app.use(bodyParser.json());
var exphbs  = require('express-handlebars');
console.log(__dirname)
app.use('/',express.static(__dirname + '/public'));
app.engine('handlebars', exphbs());
app.set('view engine', 'handlebars');
app.use('/',indexRouter)
const PORT = 5000;
app.listen(PORT,()=>console.log('it started on 5000'))

при попытке опубликовать эту форму яполучение: не удается POST / войти, что я здесь пропускаю?

Ответы [ 2 ]

0 голосов
/ 29 сентября 2019

Вам необходимо определить действие формы

<form action="/login" method="post">

Но я рекомендую использовать js для отправки запросов

fetch('/login', {
     method: 'POST',
     body: JSON.stringify(yourFormData),
     // ...another Opts if it needs
})

Также это может быть проблемой с вашимкод сервера, потому что я не вижу определения маршрутизатора в файле indexRouter , вы должны добавить его:

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

// then your code:
router.post('/login', loginController);

Но вы можете добавить эту строку для запросов проверки сообщений:

app.post('/login', (req, res) => {
    res.status(201).json(req.body); // or console.log
});
0 голосов
/ 29 сентября 2019

Вы должны обработать текущую страницу , а не страницу '/ login' в route.js:

router.post('/', //...

Вместо записи

router.post('/login', //...

Поскольку вы отправилиданные формы для текущей страницы , а не для '/ login' страницы

Почему текущая страница? Потому что вы не сделалине определите атрибут действия в вашей форме

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...