Javascript nodejs-我通过POST发送的参数未定义
server.js:Javascript nodejs-我通过POST发送的参数未定义,javascript,json,node.js,ajax,express,Javascript,Json,Node.js,Ajax,Express,server.js: var express = require('express'); var bodyParser = require('body-parser'); var app = express(); loggedIn = {}; app.use('/',express.static('www')); // static files app.use(bodyParser.json()); app.use(bodyParser.
var express = require('express');
var bodyParser = require('body-parser');
var app = express();
loggedIn = {};
app.use('/',express.static('www')); // static files
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
app.listen(8080, function () {
console.log('Port 8080!');
});
app.get('/user', function(req, res) {
if (typeof req.query.user != 'undefined') {
user = req.query.user;
res.status(200).send('Works');
}
});
app.post('/user', function(req, res) {
user = req.body.user;
if (typeof users[user] != 'undefined') {
return res.status(405).send('Access Forbidden');
} else {
loggedIn.push(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请求时,它都会挂起,即使所有参数都显示在Firebug中。当我试图将ContentType强制到application/json时,我得到一个“意外的令牌u”错误400个错误请求,这意味着我发送的是未定义的,即使当我检查那里的POST请求时,Firebug中有明显的参数和值可见,并且我知道我正在传递某些东西,因为在Firebug中,我传递的变量具有DOM部分中的值,这些值在Firebug下的POST请求中弹出(parameters-user=“some text here”)。当您使用Content Type=application/json时
然后所有主体都将解析为JSON,您无需解析它
if(typeof req.body==“string”){
var body=JSON.parse(req.body)
}
尝试以字符串形式发送数据
$.ajax({
method: "POST",
url: "/user",
data: JSON.stringify({"user" : user}),
contentType: "application/json; charset=utf-8",
success: function(data) {
// success
},
error: function() {
// error case
}
});
希望它能起作用 您是否尝试过将
数据:{“user”:user}
更改为数据:JSON.stringify({“user”:user})
?您在req.body
中得到了什么?您是否尝试过控制台.log整个请求对象?另外,您可能对POST请求有一些保护,比如CSRF令牌?当您执行console.log(req.body)时,结果是什么?用户是什么?一根绳子?的确是。谢谢