处理ajax请求,而不是接收数据

时间:2017-09-27 14:16:46

标签: javascript node.js ajax

我很难设置我的客户端ajax调用来向节点快速服务器发送数据。 我想解雇我的ajax请求" onclick"一个href链接。

我尝试将链接的ID作为变量发送到服务器,但服务器没有收到我的数据(没有setInterval)

如果我把ajax请求放在setInterval()内(我不想这样做,因为我只想在链接被点击到服务器后发送数据), 服务器接收res.req.body中的数据,为什么?

客户方:

 $('.link_group').click(function () { 
    data = $(this).attr('id');
    $.ajax({
      type: "POST",
      url: "/ajax_handler",
      data: {id: data}
    });
 });

服务器端

app.post("/ajax_handler", function(req, res) {
  res.send({  //works as it should....
    user       : req.session.user,
    data_objekt: req.session.data
  });

  if(res.req.body) {
    console.log(res.req.body);
  }
});

这甚至是一种常见的方式来捕捉"来自客户的数据?

if(res.req.body) {...

似乎不对,但我不知道如何以更聪明的方式做到这一点/无法找到任何好的例子。 我即将向/ajax_handler发送3-4个Ajax其他请求,这导致了我的下一个问题:如何处理对同一个网址的多个ajax请求?

提前致谢!

1 个答案:

答案 0 :(得分:0)

您正在解析请求吗? req.body最初为空/未定义。您需要将其传递给将数据解析为req.body的中间件。 Body-parser是一个可以实现此目的的nodejs模块。以下是发送JSON数据的POST请求的方法。

const bodyParser = require('body-parser')
app.use(bodyParser.json());
app.post("/ajax_handler", function(req, res) {
   res.send({  //works as it should....
     user       : req.session.user,
     data_objekt: req.session.data
   });
  if(req.body) {
    console.log(req.body);
  }
});