nodejs服务器没有从POST请求中接收任何参数[重复]
Posted
技术标签:
【中文标题】nodejs服务器没有从POST请求中接收任何参数[重复]【英文标题】:nodejs server not receiving any parameters from POST request [duplicate] 【发布时间】:2017-08-23 16:50:22 【问题描述】:server.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');
);
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
);
即使 GET 请求完全按预期工作并在此处传递参数,但由于某种原因,post 请求没有。在萤火虫中,我注意到 POST 请求没有收到任何参数(POST 用户),而 GET 请求(GET 用户?用户 = XYZ)。我现在真的很茫然。
【问题讨论】:
【参考方案1】:您必须告诉您的 express 应用解析请求正文
app.use(express.bodyParser());
对于快递4+
var express = require('express')
var bodyParser = require('body-parser')
var app = express()
// parse application/json
app.use(bodyParser.json())
如需参考,请转到 https://expressjs.com/en/4x/api.html#req 并查看标题为 req.body
的部分【讨论】:
我试过这个,但它给了我需要单独安装中间件的错误(我在 express 4.0 上)。但是,当我尝试使用“npm install --save body-parser”安装它时,它不允许我(未知系统错误 -122,与 mkdir 有关)。 终于设法安装 body-parser,在所有实例上使用 req.body.以上是关于nodejs服务器没有从POST请求中接收任何参数[重复]的主要内容,如果未能解决你的问题,请参考以下文章