将数据从Ajax Post传递到节点js

时间:2017-08-01 06:31:40

标签: javascript jquery node.js ajax

我正在学习节点,并希望从Ajax调用向节点发送一些数据。

以下是我的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 :::: {}

请建议。

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

您需要利用正文解析器中间件从post请求中提取数据。你可以这样做:

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获取。这用于从get路径获取动态变量。