我想在meteor中使用Template.event中的post参数创建HTTP.call。我已经在铁路中定义了路由:我当前应用的路由器路由。 路线正在接听电话,但我无法获得帖子参数。该路由是服务器端路由,并使用以下命令返回pdf内容:
Template.eStatement.events({
'click .pdf': function (event, template){
event.preventDefault();
param = Some json object that I need to pass as post parameter.
HTTP.call("POST", '/statement', JSON.stringify(param),
function(error, result){ if(result){ // } if(error){ // } //done(); }); }});
这是我的路线(我正在使用铁:流星的航线包)
Router.route('/statement', function () {
var param = JSON.parse(this.params.query.param);
/** Get the pdf content by calling the api
/** Write the content back :
this.response.writeHeader('200', {
'Content-Type': 'text/html',
'Content-Disposition': "inline",
});
this.response.write('pdfcontent');
this.response.end(); },{where: 'server'}
答案 0 :(得分:1)
尝试这样的事情:
在客户端:(在客户端/文件夹中)
Template.eStatement.events({
'click .pdf': function (event, template) {
var params = {
something: 'abcdef',
someOption: true
};
HTTP.call('POST', '/statement', {
data: params
}, function (error, result) {
console.log('http callback');
console.log(error);
console.log(result);
});
}
});
在服务器上:(在服务器/文件夹中)
Router.route('/statement', {
where: 'server',
action: function () {
var params = this.request.body;
// do something with params
this.response.writeHeader('200', {
'Content-Type': 'text/html',
'Content-Disposition': "inline"
});
this.response.write('pdfcontent');
this.response.end();
}
});
请记住,在路线中,this.request.body
在这种情况下是一个对象,而不是一个字符串。因此,您无需使用JSON.stringify
和JSON.parse
来处理此问题。