HTML форма не отправляет данные на node js - PullRequest
1 голос
/ 01 августа 2020

Я пытаюсь реализовать форму html, которая принимает ввод и отправляет его на сервер node js, но форма html не отправляет никаких данных на node js. Он делает запрос, но данные формы не отправляются.

У меня есть индекс. html файл

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>Input Form</title>
</head>
<body>
    <h1>Send a message:</h1>
    <form action="http://localhost:3000/action" method="POST">
        <label for="data">Message:</label>
        <input type="text" id="data" placeholder="Enter your message" name="text"/>
        <input type="submit" value="Send message" />
    </form>
</body>
</html>

и node js файл

//Modules
const fs = require ('fs');
const express = require('express');
const app = express();
const bodyParser = require('body-parser');
const http = require('http');
const actionRoute=require('./routes/action')
const server = http.createServer(app)
app.use(express.urlencoded({ extended: true }))
app.use(bodyParser.json())
app.all('/',(req,res)=>{
    res.statusCode = 200;
    res.setHeader('Content-Type', 'text/html');
    res.end(fs.readFileSync('./public/index.html'))
})
const hostname = 'localhost';
const port = 3000

app.post('/action',(req,res)=>{
    console.log(req.body)
    res.statusCode=200;
    res.end("thnx")
})


server.listen(port , hostname,function(){
    console.log('Server running at http://'+hostname+':'+port);
});

Структура каталогов:

|
| -index. js
| -publi c
| --index. html

In почтовый маршрут req.body пуст, он печатает {}

1 Ответ

2 голосов
/ 01 августа 2020

Я пробовал точно такой же код, и он отлично работал. Одна из возможных причин, по которой это не сработало для вас, заключается в том, что форма html находится на другом хосте, запросы из разных источников по умолчанию не разрешены. Чтобы разрешить все источники:

  1. Установить cors из npm

    npm установить cors

  2. Используйте промежуточное ПО CORS для ваш маршрут

const cors = require('cors');
.
.
.
app.post('/action', cors(), (req, res) => {
   console.log(req.body)
   res.statusCode=200;
   res.end("thnx")
});

Проверьте express официальную документацию подробнее

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