Как отправить параметры из формы, используя Express и Node.js - PullRequest
2 голосов
/ 05 апреля 2019

Извините за английский, я бразилец и не очень хорошо пишу.

Я пытаюсь отправить по почте данные формы, используя Express:

index.html

<form action="insert" method="post">
            <p><h4> Title </h4>   <input type="text" name="title" id="title" size="40" maxlength="30" placeholder="Name of task"/> </p> 

            <p><h4>Description</h4> <textarea name="description" id="description" cols="50" rows="3" placeholder="description of task"></textarea> </p> 

            <p> 
                <h4>Grade</h4>
                <input type="radio" name="urgency" value="2"> 2
                <input type="radio" name="urgency" value="1" checked> 1
                <input type="radio" name="urgency" value="0"> 0
            </p>

            <p> 
                <h4>How?</h4>
                <select name="taskType" id="select"> 
                    <option value="2"> N* </option> 
                    <option value="1"> Hour </option> 
                    <option value="0"> Minute </option> 
                </select>
                <input type="text" name="repeats" id="options" size="40" maxlength="5" placeholder="NX?"/> </p> 
            </p>

            <p><button type="submit"> Submit </button></p>
        </form>

app.js

const express = require('express');
const bodyParser = require('body-parser');
const mysql = require('mysql');
const app = express();
app.use(bodyParser.urlencoded({ extended: true }))


const db = mysql.createConnection({
        host     : 'localhost',
        user     : 'root',
        password : '',
        database : 'metas'
});

db.connect( (err)  => {
        if(err) throw err;
        console.log('MySQL conected...');
});

app.get('/select', (req, res) => {
        let sql = "SELECT * FROM tasks";
        db.query(sql, (err, result) => {
                if(err) throw err;
                res.send(result);
        })
})

app.post('/insert', (req, res) => {
        let post = 
                {title: req.body.title, 
                description: req.body.description, 
                grau: req.body.urgency, 
                tipoRealizacao: req.body.taskType, 
                repeticoes: req.body.repeats
                }
        let sql = 'INSERT INTO tasks SET ?';
        let query = db.query(sql, post, (err, result) => {
                if(err) throw err;
                res.send("Post added");
        })
})


app.listen('3000', () => { console.log("Server initiated") } );

Я использую mysql для хранения задач, более того, я использую wampp на порту 3306, но при отправке формы у меня появляется ошибка:

Не найдено

Запрошенный URL / MetaSite / public / insert не найден на этом сервере.

Apache / 2.4.35 (Win64) PHP / 7.2.10 Сервер на локальном хосте Порт 80

index.html находится в общей папке и app.js в src.

Может кто-нибудь помочь мне, пожалуйста? Я не знаю, что я делаю не так. Спасибо.

1 Ответ

1 голос
/ 05 апреля 2019

На основании вашего кода не похоже, что ваш index.html размещается на сервере javascript.Чтобы экспресс мог обрабатывать запрос на публикацию из этого файла, на этот файл должна ссылаться и размещаться экспресс.Если это то, что вы делаете, и вы просто не показываете это в своем коде, пожалуйста, скажите мне, но в противном случае это похоже на вашу проблему.Это нужно сделать так:

var path = require('path');

app.get('/', function(req, res) {
    res.sendFile(path.join(__dirname + 'public/index.html'));
});

для размещения файла индекса на http://localhost:3000/.

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