2017-01-19 48 views
-1

我有一个在angularjs客户端的数据。当我使用$ http.post发送数据到服务器时,我无法读取服务器上的数据。我不明白我哪里出了问题? 这是角码:节点js服务器没有从angularjs接收数据

var data = $.param({ 
     id:$scope.user_id, 
    }); 
alert(JSON.stringify(data)); 
$http.post('/getdetails',data) 

这里是节点JS服务器代码:

app.post('/getdetails',function(req,res){ 
    console.log(req.body); 
    console.log(req.body.id); 

}); 

在服务器日志输出:

{} 
undefined 

我并不关心数据我送,我只关心它是否可以在服务器上读取。

谢谢!

+2

使用[特快]( http://expressjs.com)?您需要使用[body-parsing middleware](http://expressjs.com/en/4x/api.html#req.body)。 –

+0

那里的状态是什么?您需要处理失败块中的状态 – Mithun

+0

是的,我正在使用body-parser – VisheshRaju

回答

0

您正在尝试使用仅用于GET方法而不是Post的$ .param()来序列化数据。只需直接将您的JSON数据的NodeJS这样的:

var data = { 
     id:$scope.user_id, 
    }; 
$http.post('/getdetails',data) 

在你标题注明:

"Content-Type" : "application/json" 

所以最终的请求将是这样的:

$http.post('/getdetails',data,{headers : {"Content-Type" : "application/json"}}) 
+0

嗯,我试过了,它似乎不工作!相同的结果为准。 “app.use(bodyParser.urlencoded({扩展:假}));”这是包括bodyparser的正确方法吗? – VisheshRaju

+0

是的也加入这些:app.use(bodyParser.json()); app.use(bodyParser.text()); app.use(bodyParser.urlencoded({extended:false })); –

+0

这样它将根据请求 –

相关问题