NodeJS如何获取服务器中的数据,通过POST从jquery ajax调用发送

时间:2014-09-11 08:10:52

标签: jquery ajax node.js post

我的客户正在进行ajax调用

{{


        function callNode(){

        console.log("I am called");
        var data = {"emailId":"gopal@gmail.com"};



        $.ajax({
            type: 'POST',
            data: JSON.stringify(data),
           /* data: {
                blob: {wob:"1",job:"2", ar:[1,2,{a:'b'}]}
            },*/
            contentType: "application/javascript",
            //contentType: "application/x-www-form-urlencoded",
            dataType:'json',
            url: 'http://localhost:3000/notification',                      
            success: function(data) {
                console.log('success');
                console.log(JSON.stringify(data));                               
            },
            error: function(error) {
                console.log("some error in fetching the notifications");
             }

        });
    }
}}

我能够在app.js中获取此请求,但无法获取我传递的数据 我试图搜索但没有任何工作

{{

      app.post('/notification', function(req, res) {
      JSON.stringify(req.params);


      /*
       var body;
       req.on('data', function(chunk) {
        console.log("Received body data:");       
         body += chunk;
      });

       // the end event tells you that you have entire body
      /*req.on('end', function () {
       try {
      var data = JSON.parse(body);
       colnosole.log(data);

    } catch (er) {
      // uh oh!  bad json!
      res.statusCode = 400;
      return res.end('error: ' + er.message);
    }

  }
   */


}}

事情是它没有进入任何请求和响应事件(因为我看到很多人使用它来获取数据。

请帮助我知道这是第一次在节点上使用ajax

3 个答案:

答案 0 :(得分:3)

由于您以json方式发送数据,因此需要相对更改contentType,因此ajax调用应为:

$.ajax({
        type: 'POST',
        data: JSON.stringify(data),
       /* data: {
            blob: {wob:"1",job:"2", ar:[1,2,{a:'b'}]}
        },*/
        contentType: "application/json",
        //contentType: "application/x-www-form-urlencoded",
        dataType:'json',
        url: 'http://localhost:3000/notification',                      
        success: function(data) {
            console.log('success');
            console.log(JSON.stringify(data));                               
        },
        error: function(error) {
            console.log("some error in fetching the notifications");
         }

    });

在此处,您可以看到contentType已更改为application / json。

在服务器端,您需要检查request.body以获取数据而不是request.params。

答案 1 :(得分:2)

你必须使用正文解析器中间件(https://www.npmjs.org/package/body-parser),你需要声明使用哪个badyParser

  • app.use(bodyParser.json())或
  • app.use(bodyParser.raw())或
  • app.use(bodyParser.text())或
  • app.use(bodyParser.urlencoded())

    在主js文件中。然后req.body对象将包含你的json / text / raw / urlencoded数据。

答案 2 :(得分:1)

req.params并没有按照您的想法行事。

app.get('/:route', function(req, res) {
    console.log(req.params.route);
});

访问/test会使用req.params.route填充test

您正在寻找只能与body-parser中间件一起使用的req.body

相关问题