我有一个快速服务器使用以下参数和路由
var express = require('express');
var bodyParser = require('body-parser');
var router = express.Router();
var app = express();
app.use(router);
app.use(bodyParser.urlencoded());
var jsonParser = bodyParser.json({ type: 'application/json'});
router.post('/login', jsonParser, function(req, res) {
console.log('request body : ' + req.body);
});
我的ajax回调如下
var user = {
username: $("#_username").val(),
password: $("#_password").val()
}
var jsonText = JSON.stringify(user);
console.log(jsonText);
$.ajax({
type: "POST",
url: "http://localhost:3002/login",
async: true,
dataType: 'json',
data: jsonText,
cache: false,
success: function(data, textStatus, xhr) {
},
error: function(xhr, textStatus, errorThrown) {
}
});
我不明白为什么我只是在身体类型中得到一个空数组,并且在npm上跟随身体解析器示例几乎到了字母。
知道为什么会这样做吗?
谢谢!
答案 0 :(得分:0)
您尚未根据the docs:
创建application/json
解析器的实例
var express = require('express')
var bodyParser = require('body-parser')
var app = express()
// create application/json parser
var jsonParser = bodyParser.json()
// create application/x-www-form-urlencoded parser
var urlencodedParser = bodyParser.urlencoded({ extended: false })
这行代码更改了json解析器愿意接受的接受“类型” - 您正在更改设置(如果您有一些自定义json对象):
var jsonParser = bodyParser.json({ type: 'application/json'});
最好验证你的帖子请求是否正在解雇......
router.post('/login', jsonParser, function(req, res) {
console.log("posted!");
}