我是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时,我得到一个数据列表但不是我发送的内容。
我希望有人可以提供帮助!
答案 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,它有很多记录良好的示例,因此如果您不确定如何使用该模块,请查看