【问题标题】:AJAX and Node JS/Express post not sending or receiving dataAJAX 和 Node JS/Express 帖子不发送或接收数据
【发布时间】:2017-02-19 10:33:22
【问题描述】:

我是 Node 新手,我正在尝试使用 app.post,一切正常,包括执行操作时的控制台日志,但它没有接收到来自 main.js 的 AJAX 发送的数据。

这是发送它的 main.js 的一个sniper:

        $.ajax({
    type: 'POST',
    data: '{"title":'+ this.messageInput.value +'}',
    url: 'http://localhost:3000/send'
});

这是我应该接收数据的 config.js:

app.post('/send', function(req, res) {
console.log(req.body);
console.log('Send button clicked');
});

我正在使用带有 express 的 bodyParser。这就是我使用 req.body 的原因。当我控制台日志 req.body 我得到未定义。当我控制台 log req 时,我得到一个数据列表,但不是我发送的内容。

希望有人能帮忙!

【问题讨论】:

    标签: javascript jquery ajax node.js express


    【解决方案1】:

    您使用 body-parser 很好,但是您是否在应用中定义了 JSON 解析器?

    您没有粘贴所有代码,如果您还没有,请添加:

    var express = require('express')
    var bodyParser = require('body-parser')
    
    var app = express()
    
    // create application/json parser --> This is probably what you are missing
    var jsonParser = bodyParser.json()
    
    // POST /api/users gets JSON bodies --> Note how we use a jsonParser in our app.post call
    app.post('/send', jsonParser, function (req, res) {
      console.log(req.body);
      console.log('Send button clicked');
    })
    

    另外,不要手动构建数据,只需创建一个对象并发送它(记住 JSON 是 Java Script Object Notation 的缩写)

    var myData = {};
    myData.title = this.MessageInput.value;
    

    然后在你的 Ajax 代码中,使用 myData:

    $.ajax({
        type: 'POST',
        data: myData,
        url: 'http://localhost:3000/send'
    });
    

    注意:此示例的大部分内容直接取自 body-parser Github Page,它有很多文档齐全的示例,因此如果您不确定如何使用该模块,请查看

    【讨论】:

    • 非常感谢!我错过了 jsonParser。你不知道我在这个 lol 上花了多长时间。
    • 很高兴对您有所帮助,请将此标记为正确答案以供将来参考
    猜你喜欢
    • 1970-01-01
    • 2019-12-16
    • 1970-01-01
    • 2015-03-02
    • 2021-05-02
    • 2014-10-10
    • 2020-02-09
    • 2021-05-23
    • 2013-04-08
    相关资源
    最近更新 更多