这是我第一次在nodeJS中构建一个express服务器,我不太了解我在做什么,但我设法使用路由和控制器进行POST和GET...我不知道为什么req.body显示{在终端上,显然我没有从 AJAX 接收到任何数据,但为什么呢?请帮忙。
服务器.js
const express = require('express');
const morgan = require('morgan');
const path = require("path");
const mysql = require('mysql');
const myConnection = require('express-myconnection');
const app = express();
const bodyParser = require('body-parser');
// Manejar solicitudes JSON
app.use(express.json());
// Configuración de acceso a la base de datos
const hostDB = "localhost";
const userDB = "root";
const passwordDB = "";
const portDB = 3306;
const databaseDB = 'motionpose';
// Importación de rutas
const usuarioRuta = require('./routes/usuarios');
const registroRuta = require('./routes/registroRuta');
// Configuración
app.set('port', process.env.PORT || 5555);
// Middlewares
app.use(morgan('dev'));
app.use(myConnection(mysql, {
host: hostDB,
user: userDB,
password: passwordDB,
port: portDB,
database: databaseDB
}, 'single'));
// Rutas
app.use('/login', usuarioRuta);
app.use('/registro', registroRuta);
// Archivos estáticos
app.use(express.static('public'));
// API
app.get('/', (req, res)=>{
res.sendFile(path.join(__dirname, 'view', 'index.html'))
});
app.listen(app.get('port'), ()=>{
console.log('Server corriendo en puerto: ' + app.get('port'));
});
usuarios.js
const express = require('express');
const router = express.Router();
const bodyParser = require('body-parser'); // Importa body-parser
const usuariosController = require('../controllers/usuariosController');
router.use(bodyParser.urlencoded({ extended: false }));
router.use(bodyParser.json());
router.get('/', usuariosController.view);
router.post('/', usuariosController.post);
module.exports = router;
登录.js
$(document).ready(function(){
$("#continuarBoton").on("click", function(){
var formData = new FormData();
formData.append("correo", $("#correo").val());
formData.append("contrasena", $("#contrasena").val());
$.ajax({
url: '/login', // Reemplaza con la ruta correcta hacia tu función getUsuarios
method: 'POST',
dataType: 'json',
data: {
correo: "test1",
contrasena: "test2"
},
processData: false,
contentType: false,
success: function(data) {
console.log(data);
if(data.Exito){
console.log("Solicitud POST exitosa");
}else{
console.error("Solicitud POST DENEGADA");
}
},
error: function(error) {
console.error(error);
}
});
});
});
usuariosController.js
const controller = {};
const path = require('path');
let usuariosLista = [];
let Exito;
controller.view = (req, res)=>{
res.sendFile(path.join(__dirname, '..', 'view', 'login.html'));
Exito = true;
};
controller.post = (req, res) => {
console.log("This is working");
console.log(req.body);
res.json({Exito: Exito});
}
module.exports = controller;
终端输出:
This is working
{}
POST /login 200 3.802 ms - 14
我期待通过 AJAX 来 console.log 数据。 当打印 req.body 时,我收到 {} ;当我尝试访问特定值时,我收到未定义的信息,例如 req.body.correo。
我已经安装了 body-parser。
为此,您需要在通过 HTML 发送数据时指定发送 JSON 数据。所以你需要定义
application/json
。
$(document).ready(function(){
$("#continuarBoton").on("click", function(){
var formData = new FormData();
formData.append("correo", $("#correo").val());
formData.append("contrasena", $("#contrasena").val());
$.ajax({
url: '/login', // Reemplaza con la ruta correcta hacia tu función getUsuarios
method: 'POST',
dataType: 'json',
data: {
correo: "test1",
contrasena: "test2"
},
processData: false,
contentType: "application/json",
success: function(data) {
console.log(data);
if(data.Exito){
console.log("Solicitud POST exitosa");
}else{
console.error("Solicitud POST DENEGADA");
}
},
error: function(error) {
console.error(error);
}
});
});
});
您需要在表格中填写
contentType
值。也可以通过Postman测试API是否有问题。