При отправке формдаты req.body express'а пустой. index.js
const express = require("express");
const bodyParser = require("body-parser");
const cookieParser = require("cookie-parser");
const credentials = require("./credentials.js");
const app = express();
const handlebars = require('express-handlebars').create({defaultLayout:"main"})
app.engine('handlebars',handlebars.engine);
app.set("view engine","handlebars");
app.set("view cache","handlebars");
app.set("port",process.env.PORT || 3000);
app.use(express.static(__dirname + "/public"));
app.use(bodyParser.urlencoded({extended:true}));
app.use(cookieParser(credentials.cookieSecret))
app.get("/",function(req,res){
let data = req.cookies.value ? req.cookies.value : 0;
res.render("form",{value:data});
})
app.get("/send",function(req,res){
res.type("text/plain");
res.status(200);
res.send("rpf;");
})
app.get("/about",function(req,res){
res.render("about");
})
app.post("/register",function(req,res){
console.log(req.body);
res.send("Works!");
})
app.use(function(req,res){
res.status(404);
res.render("404");
})
app.use(function(err,req,res,next){
res.status(500);
res.send("500 - Ошибка Сервера");
})
app.listen(app.get('port'),function(){
console.log("The server is working")
})
main.js
const form = document.querySelector(".main-form");
form.onsubmit = async (e) => {
e.preventDefault();
const data = new FormData(form);
fetch(`${form.action}`,{
"X-Requested-With":"XMLHttpRequest",
"method":"POST",
body:data
}).then(response => response.text()).then(val => console.log(val));
}
form.handlebars
<form class="main-form" action="/register" method="POST">
<fieldset>
<legend>Please write down your information.</legend>
<input type="text" name="Value"/>
</fieldset>
<button type="submit">Send form!</button>
</form>
Это происходит из-за того, что вы отправляете данные как Form Data
(multipart/formdata
), но body-parser
не умеет работать с таким типом, на GitHub пишут:
This does not handle multipart bodies, due to their complex and typically large nature. For multipart bodies, you may be interested in the following modules:
Исправить это можно убрав использование Form Data
из main.js
, т.е. оправлять запрос обычными средствами браузера, тогда он будет отправляться как application/x-www-form-urlencoded
, и body-parser
его прекрасно поймет (multipart/formdata
вам тут не нужен, он в основном используется при передаче файлов).
Или если же нужно отправлять как Form Data
, то можно поставить один из пакетов перечисленных на GitHub
, например multer
:
const multer = require('multer');
const upload = multer();
app.post("/register", upload().none(), function (req, res) {
console.log(req.body);
res.send("Works!");
})
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Здравствуйте помогите пожалуйстаКак сделать так что бы если в элементе li существует class hide тогда этот элемент пропустить и перейти к другому
мне просто нужно установить ширину списка, но появляется ошибка Error in v-on handler: "TypeError: commentsListWidth is not a function" как ее исправить?
Изучаю первый день DjangoСоздал html файл, связал его с представлениями через URL как показано тут: https://metanit