在我的服务器中,我得到了这个:
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 "";
那么,有什么想法吗? :(
答案 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);
});