在ajax调用之下,我没有在节点服务器端看到任何发布数据。
$.ajax({
type: "POST",
url: window.location.origin + "/api/books",
data: {
title: "Javascript some good partd",
author: "Douglas crockford",
releaseDate: new Date(2013, 4, 2).getTime()
},
dataType: "json",
success: function(data) {
console.log(data);
}
});
在做了一些搜索之后,我发现它可能是因为身体解析器配置但无法正确完成。请在下面找到节点服务器配置。
app.configure( function() {
app.use(bodyParser());
app.use(bodyParser.urlencoded());
app.use(bodyParser.json());
app.use(express.methodOverride());
app.use(app.router);
app.use(express.static(path.join(application_root, 'site')));
app.use(express.errorHandler({dumpExceptions: true, showStack: true}));
});
API调用是:
app.post('/api/books', function (req, res) {
console.log(req.body);
var book = new BookModel({
title: req.body.title,
author: req.body.author,
releaseDate: req.body.releaseDate
});
return book.save(function (err, response) {
if (!err) {
return res.send(book);
} else {
console.log(err);
}
});
});
req.body被记录为未定义。有人可以帮忙调试这个问题吗?
答案 0 :(得分:1)
删除app.configure功能。
它内部的所有代码都可以悬浮在该文件中。
我最好的猜测是它没有解雇这个功能。
我倾向于使用此代码
var bodyParser = require('body-parser');
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));