servidor.js:
var express = require('express'); var app = express(); loggedIn = {}; app.use('/',express.static('www')); // static files app.listen(8080, function () { console.log('Port 8080!'); }); app.get('/user', function(req, res) { if (typeof req.param('user') != 'undefined') { user = req.param('user'); res.status(200).send('Works'); } }); app.post('/user', function(req, res) { user = req.param('user'); if (typeof users[user] != 'undefined') { return res.status(405).send('Access Forbidden'); } else { loggedIn[user] = ""; res.status(201).send('New User'); } } });Solicitudes de client.js:
$.ajax({ method: "GET", url: "/user", data: {"user" : user}, dataType: "application/json", success: function(data) { // success }, error: function() { // error case } }); $.ajax({ method: "POST", url: "/user", data: {"user" : user}, dataType: "application/json", success: function(data) { // success }, error: function() { // error case } });Aunque la solicitud GET funciona exactamente como se esperaba y pasa el parámetro aquí, por alguna razón, la solicitud posterior no lo hace. En firebug, noto que la solicitud POST no recibe ningún parámetro (usuario POST) mientras que la solicitud GET sí (usuario GET? usuario = XYZ). Estoy realmente perdido en este momento.
Tienes que decirle a tu aplicación express que analice el cuerpo de la solicitud
app.use(express.bodyParser());para expreso 4+
var express = require('express') var bodyParser = require('body-parser') var app = express() // parse application/json app.use(bodyParser.json())Para referencia, vaya a https://expressjs.com/en/4x/api.html#req y mire la sección titulada req.body