AJAX和Node JS / Express不发送或接收数据

时间:2016-10-10 22:42:36

标签: javascript jquery ajax node.js express

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

这是一个发送它的main.js的剪切器:

SYMFONY__ENV__SECRET=1234567890
...

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

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

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

我希望有人可以提供帮助!

1 个答案:

答案 0 :(得分:4)

使用正文解析器很好,但是你在应用程序中定义了一个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,它有很多记录良好的示例,因此如果您不确定如何使用该模块,请查看