没有在节点服务器中看到发布数据

时间:2016-08-04 17:55:21

标签: ajax node.js post

在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被记录为未定义。有人可以帮忙调试这个问题吗?

1 个答案:

答案 0 :(得分:1)

删除app.configure功能。

它内部的所有代码都可以悬浮在该文件中。

我最好的猜测是它没有解雇这个功能。

我倾向于使用此代码

var bodyParser = require('body-parser');
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));