带有角度2的Http请求没有发送

时间:2016-06-29 22:59:25

标签: angularjs node.js angular

在我的服务器中,我得到了这个:

app.post('/', function(req,res){

    //TODO: vaidate request

    console.log("req:",res);

    var query = req.query;

    console.log("query",query);

});

在我的浏览器中,我有这个:

//var to_send = ({"username": username, "password": password});
var to_send = 'username='+username+'&password='+password;

  var headers = new Headers();
    //headers.append('Content-Type', 'application/json'); 
    headers.append('Content-Type', 'application/x-www-form-urlencoded');

  this.http
    .post('http://localhost:8080/', to_send, {
        headers: headers
      })
    .map(response => response.json())
    .subscribe(
      response => this.returned = data,
      () => console.log('Request sent')
    );
return "";

收到请求,但我发送的参数没有显示在控制台日志中。我尝试用json和url-encoding发送它们,两者都在代码中实现。任何想法?非常感谢你的帮助!

修改

这是我的新代码,仍然失败:

var to_send = JSON.stringify({"username": username, "password": password});
//var to_send = 'username='+username+'&password='+password;

  var headers = new Headers();
    headers.append('Content-Type', 'application/json'); 
    //headers.append('Content-Type', 'application/x-www-form-urlencoded');

  this.http
    .post('http://localhost:8080/', to_send, {
        headers: headers
      })
    .map(response => response.json())
    .subscribe(
      response => this.returned = data,
      () => console.log('Request sent')
    );
return "";

那么,有什么想法吗? :(

2 个答案:

答案 0 :(得分:0)

您要发送为有效内容数据还是URL字符串?因为你正在混合两者。根据您的http.post(),我认为您可能希望将其作为有效负载数据发送。

您需要将有效负载数据定义为json,而不是将其添加到URL上的字符串。

var to_send = {username: 'username', password: 'password'} 

然后在你的帖子请求中你需要将JSON字符串化我相信JSON.stringify(to_send)作为第二个参数。

如果您尝试将其放在URL上,那么您需要将null作为第二个参数,并将该字符串附加到您的URL以发送请求。

答案 1 :(得分:0)

如果你使用bodyParser怎么办?:

var express = require('express')
var bodyParser = require('body-parser')

var app = express()
// parse application/json
app.use(bodyParser.json())

然后:

app.post('/', function(req,res){

    var query = req.body;

    console.log("Query: ", query);

});