javascript - 在 Express 中接收 Jquery POST 数据

标签 javascript jquery node.js express post

编辑 请参阅下面已接受的答案以了解修复方法。我还必须从我的 POST 请求中删除行 contentType: 'appliction/json',

我正在尝试向 Node.js/Express 发送一个字符串,但是 req.body 是未定义的服务器端。

客户端 jQuery:

$.post({
        traditional: true,
        url: '/matches',
        contentType: 'appliction/json',
        data: viewedProfiles,
        dataType: 'json',
        success: function(response){

express :

app.use(bodyParser.urlencoded({extended:true}));
app.use(bodyParser.json());

app.post('/matches', isLoggedIn, function(req, res){
  console.log(req.body) // this is undefined
  var loadedProfiles = []
  loadedProfiles.push(req.body.viewedProfiles)
  console.log('loadedProfiles')
  console.log(loadedProfiles)

我试过:

  • 未指定“数据类型”
  • 设置数据:JSON.stringify(viewProfiles)
  • 在客户端将字符串拆分成一个数组,然后让 jQuery 将其字符串化
  • 寻找 req.params 而不是 req.body(捕获救命稻草)

我可以在开发工具中看到 XHR 请求,它包含我期望的字符串。

我在将数据发送到 Express 时错过了什么非常明显的事情?

谢谢。

最佳答案

您的服务器端代码看起来不错,但您需要使用 $.ajax() 而不是 $.post() 函数,因为 $.post() 函数将数据发送到 url(使用 url 编码)。所以你的 JQuery 代码将是

$.ajax({
        url: '/matches',
        type: 'POST',
        contentType: 'application/json',
        data: JSON.stringify({"viewedProfiles": viewedProfiles}),
        success: function(response){

希望对你有帮助

关于javascript - 在 Express 中接收 Jquery POST 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40001564/

相关文章:

php - jQuery Accordion 菜单扩展了页面长度

javascript - 将选择器应用于已选择的元素

javascript - 我有一个不同 ID 的数组,我想从每个 ID 中获取数据。是否可以?

jquery - 可拖动的 div 在被放下后会丢失其 "float left"属性

javascript - jQuery - JavaScript,将参数与 "event"一起传递给函数

node.js - Heroku Web Dyno 失败

javascript - Jquery向Django发送空数据

Jquery 可访问性内容 - 如何将焦点重新集中在特定元素上

node.js - 序列化,在边界框内搜索点

node.js - 使用 'return next(err);' 抛出错误代码