对不起,英语,我是巴西人,我不知道怎么写。
我正在尝试使用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来存储任务,而且我正在端口3306上使用wampp,但是在提交表单时出现错误:
未找到
在此服务器上找不到请求的URL / MetaSite / public / insert。
位于本地主机端口80的Apache / 2.4.35(Win64)PHP / 7.2.10服务器
index.html位于公用文件夹中,而app.js位于src中。
有人可以帮我吗?我不知道我在做什么错。谢谢。
答案 0 :(得分:1)
根据您的代码,您的index.html似乎不是由服务器javascript托管。为了使express能够处理来自该文件的邮寄请求,该文件需要由express引用和托管。如果这是您的操作,而您没有在代码中显示它,请告诉我,否则,这似乎是您的问题。您应该这样做:
var path = require('path');
app.get('/', function(req, res) {
res.sendFile(path.join(__dirname + 'public/index.html'));
});
将索引文件托管在http://localhost:3000/。