我是NodeJS的新手,我试图用Angular
向服务器发送数据$scope.logearse = function () {
$http({
method: "POST",
url: "http://localhost:8888/login",
data: $scope.usuario
}).then(function successCallback(response){
console.log(response)
}, function errorCallback(error){
alert("No se han podido enviar los datos")
})
}
但是当我尝试接收请求时,服务器始终是{}
http.createServer(function(peticion, respuesta){
console.log(peticion.url)
console.log(peticion)
// We begin with "login"
if (peticion.url == "/login") {
console.log("Inside of Login)
var datosUsuarioLogin = '';
peticion.addListener("data", function(chunk) {
datosUsuarioLogin += chunk;
// function called when a new chunk of data is recibed
});
peticion.addListener("end", function() {
// When the data is recibed is transformed in JSON
var datosUsuarioLoginObjeto = querystring.parse(datosUsuarioLogin);
recuperarDatos(datosUsuarioLoginObjeto, respuesta);
console.log(datosUsuarioLoginObjeto) //return {}
});
//End of LOGIN "if"
}
}).listen(8888)
如果我使用带有常规提交的表单,但是如果我尝试使用ANGULAR的$ http,则该代码可以使用相同的代码。
我尝试使用" params"而不是"数据"但是" params"转换URL中的数据,代码不起作用。
答案 0 :(得分:0)
您需要使用bodyParser
来解析请求正文并将结果放在request.body of route中。
app.use(express.bodyParser());
请求:
$http({
method: "POST",
url: "http://localhost:8888/login",
contentType: "application/json",
data: $scope.usuario // if usuario is not a valid json, you could to use JSON.stringify($scope.usuario);
答案 1 :(得分:0)
好的,经过大量的时间尝试finnaly我使用Express但我使用的版本不允许简单的bodyParser我需要安装身体解析器中间件 Link to body-parser
代码
var bodyParser = require('body-parser');
var jsonParser = bodyParser.json();
app.post('/', jsonParser, function (request, response) {
response.send(request.body)
});