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请求也没有。在firebug中,我注意到POST请求在GET请求(GET user?user = XYZ)时没有收到任何参数(POST用户)。我现在真的很茫然。
答案 0 :(得分:1)
您必须告诉您的快递应用解析请求正文
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
的部分