我在node.js中遇到一个问题,即通过JSON函数从帖子中获取post变量
编辑:我可以在Chrome的检查器中看到表单帖子。表格帖子很好,格式很好。
服务器位:
app.use(express.bodyParser());
app.post('/user', function (req, res) {
var tempSession = req.body.tempSession;
console.log(tempSession);
}
JSON函数的帖子:
function postJSONP(url, params, method) {
method = method || "post"; // Set method to post by default, if not specified.
var form = document.createElement("form");
form.setAttribute("method", method);
form.setAttribute("action", url);
for(var key in params) {
if(params.hasOwnProperty(key)) {
var hiddenField = document.createElement("input");
hiddenField.setAttribute("type", "hidden");
hiddenField.setAttribute("name", key);
hiddenField.setAttribute("value", params[key]);
form.appendChild(hiddenField);
}
}
document.body.appendChild(form);
form.submit();
}
调用JSON函数的帖子:
function LoginSubmit() {
var action = 'login';
var username = document.getElementById('username').value;
var password = document.getElementById('password').value;
var tempSession = generateSession();
postJSONP('/user?callback=none&action=' + action + '&user=' + username,{"password":password, tempSession:tempSession});
}
表单从HTML提交:
<input id="submit" name="submit" type="submit" value="Login" onclick="LoginSubmit();">
Node.js控制台的结果:
undefined
答案 0 :(得分:1)
在堆栈上找到一个有用的链接:
Express.js req.body undefined
我意识到req.body也是未定义的。事实证明,在允许快递服务任何路线之前,您必须配置所有内容
我在app.post()部分之前有一个app.get()。
最有帮助的部分是:
您必须确保在定义路线之前定义所有配置。
app.configure(function(){
app.use(express.bodyParser());
app.use(app.router);
});