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

标签 javascript jquery ajax node.js express

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

这是发送它的 main.js 的片段:

        $.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');
});

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

希望有人能帮忙!

最佳答案

您使用 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 ,它有大量记录良好的示例,因此如果您不确定如何使用该模块,请查看

关于javascript - AJAX 和 Node JS/Express post 不发送或接收数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39967842/

相关文章:

javascript - getServerSideProps 函数响应无法在 Next.js 中序列化为 JSON

javascript - HTML5/Javascript 数据表顺序/列排序

javascript - 您将如何对表单字段实现 Adob​​e CQ 客户端验证?

javascript - CORS plugin/--disable-web-security 如何在浏览器上工作?

javascript - Bootstrap 弹出窗口,关闭按钮

javascript - 单击时从 div 中提取 id

jquery - 使用 HTML5sortable 序列化 AJAX 数据

javascript - 时间间隔中的jQuery函数

php - 构建动态 Web 应用程序

ajax - IE 浏览器缓存和 jQuery 表单插件