2017-08-01 46 views
0

我正在学习节点并希望将一些数据从Ajax调用发送到节点。将数据从Ajax Post传递到节点j

下面是我的Ajax和节点调用。

的Ajax方法

function getUserName(){ 
    var data ={}; 
    data.email=$('#email').val(); 
    data.fNmame=$('#fNmame').val(); 
    data.lName=$('#lName').val(); 

    $.ajax({ 
     type: 'POST', 
     data: JSON.stringify(data), 
     contentType: "application/json", 
     dataType:'json', 
     url: '/getUserName',      
     success: function(data) { 
      console.log('success'); 
      console.log(JSON.stringify(data));        
     }, 
     error: function(error) { 
      console.log("some error in fetching the notifications"); 
     } 
    }); 
} 

节点功能

app.post('/getUserName',function(req,res){ 

     var reqData = JSON.stringify(req.params); 

     console.log("reqData :::: " + reqData); 

    }); 

在日志中我可以看到

reqData :::: {} 

请建议。

+0

var reqData = JSON.parse(req.body);将为你工作。 – Ved

回答

1

POST数据收到req.bodyreq.params用于动态参数。 对于/users/:id,您将在req.params中获得值id。 尝试使用req.body作为POST正文数据。

+0

从req.params更改为req.body并将输出更改为reqData :::: undefined –

+0

您是否使用'express'?我假设你是。你有'body-parser'中间件吗?很难说只有这个代码,并且需要Express 4+ –

+0

我正在使用express 4.15 –

0

终于找到答案我没有使用app.use(bodyParser.urlencoded({ extended: false }));,因为哪个帖子没有按预期工作。

0

您需要使用body-parser中间件来提取发布请求中的数据。你可以这样来做:

var bodyParser = require('body-parser'); 
app.use(bodyParser.urlencoded({ 
    extended: true 
})); 

app.post('/getUserName',function(req,res){ 

    var reqData = JSON.stringify(req.body.data); 

    console.log("reqData :::: " + reqData); 

}); 

要提取你需要得到的数据作为req.body.data而不是req.params数据。这用于从您的获取路线获取动态变量。