【问题标题】:AngularJS don't send data to NodeJS serverAngularJS 不向 NodeJS 服务器发送数据
【发布时间】:2016-09-29 13:07:40
【问题描述】:

我是 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”而不是“data”,但是“params”转换了 URL 中的数据并且代码不起作用。

【问题讨论】:

  • 您是否设置了正确的标头以及诸如 'Content-Type': 'application/json' 之类的请求
  • 如果是这种情况,我们可能需要确认 $scope.usuario 发生了什么。 .
  • 代码中那些非英语的 cmets 没有帮助
  • 现在用英文评论。 $scope.usuario 是一个 Json。我使用 'Content-Type': 'application/json' 没有成功

标签: javascript angularjs node.js server


【解决方案1】:

需要使用bodyParser解析请求体,并将结果放在路由的request.body中。

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);

【讨论】:

  • 我还没有使用 express。我想学习如何在没有 express(或其他插件)的情况下构建应用程序,然后再学习如何使用这些插件。
【解决方案2】:

好的,经过大量时间尝试最终我使用 Express 但我使用的 Express 版本不允许简单地 bodyParser 我需要安装 body parser 中间件 Link to body-parser

还有代码

var bodyParser = require('body-parser'); 
var jsonParser = bodyParser.json();

app.post('/', jsonParser, function (request, response) {
response.send(request.body) 
});

【讨论】:

    猜你喜欢
    • 2016-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-07
    • 2010-12-03
    相关资源
    最近更新 更多