AngularJS不会向NodeJS服务器发送数据

时间:2016-09-29 13:07:40

标签: javascript angularjs node.js server

我是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中的数据,代码不起作用。

2 个答案:

答案 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) 
});