使用铁路由器我当前可以通过执行以下操作将查询参数数据传递给路由:
Router.go Router.current().path.split("?")[0] + '?searchTerm=apple'
将searchTerm附加到路径当前路径。然后在我的路由器文件中,我可以使用:this.params.searchTerm
访问搜索词但是,如果我想将此数据发送到请求正文中的路由,该怎么办?如果我不想影响URL,那么通过正文将数据发送到路由将是有用的。就像发布ajax请求一样?我怎么能用Router.go或铁路由器支持的其他东西呢?
基本上我想获取数据到我的路线,但我不想使用会话,或以任何方式影响网址。所以我的最后一个选择是传递正文中的数据,但是如何?
答案 0 :(得分:2)
Meteor并不适用于旧学校的ajax请求。
如果你真的必须接受ajax请求,你可以(ab)在铁路由器中使用server-side routes:
this.route('serverRoute', {
where: 'server',
action: function() {
this.response.end("THIS IS A SERVER ROUTE..");
}
})
但是用于处理你所描述内容的接受的流星方式是在服务器端使用Meteor methods定义方法:
Meteor.methods({
foo: function (arg1, arg2) {
doStuff(arg1, arg2);
});
然后在客户端上,您可以这样称呼它们:
Meteor.call('foo', 1, 2, function (error, result) { /* CallbackHandleingCode */ } );
这不会影响url,因为内部meteor使用websockets在客户端和服务器之间交换数据。