铁:路由器+流星-不能同时添加POST数据到数据库和渲染路由
Iron:Router + Meteor - Can't both add POST data to database and render route
我正在用Meteor编写一个应用程序,需要从POST请求中获取数据,并在同一路由上呈现成功页面。这是我当前的/submit路由代码:
Router.route('/submit', function() {
Records.insert({
testValue: 'The Value',
importantVal: this.request.body.email,
createdAt: new Date()
});
this.render('success');
}, {where: 'server'});
当我运行这段代码时,数据被插入到Records数据库中,但它从不呈现成功模板。当我转到/submit路由时,它会永远加载,不会在页面上显示任何内容。当我摆脱{where: 'server'},它将呈现模板,但不添加数据到数据库。
如何获得要添加的数据和要呈现的模板?
问题是,要将数据POST到路由上,它必须在服务器上运行,并且您不能从服务器路由呈现客户端模板。解决这个问题的一种方法是使用302
重定向返回到客户端,像这样(代码是coffeescript):
Router.route '/submit', where: 'server'
.post ->
Records.insert
testValue: 'The Value'
importantVal: @request.body.email
createdAt: new Date()
@response.writeHead 302, 'Location': '/success'
@response.end()
Router.route '/success', name:'success'
server
路由接收到post数据,在重定向到client
路由之前对其进行处理。client
路由名称用于标识待渲染的模板
在isClient
和isServer
之外试试
Router.route('/submit', {
template: 'success',
onBeforeAction: function(){
Records.insert({
testValue: 'The Value',
importantVal: $('[name=email]').val(),//email from input field with name="email"
createdAt: new Date()
});
}
});
相关文章:
- JS表单提交"无法使用Chrome数据保护程序加载此页面.尝试重新加载页面.调试信息:POST CISmtuK
- 下载使用POST数据动态生成的文件
- 如何从HTTP上下文对象中获取Post数据
- HTML表单将数据POST到MySQL
- 如何使用REST将AngularJS中的数据POST到Struts2
- 如何将数据POST到节点服务器并从中获取responseText
- 在 Angular2 中构建多部分/表单数据 POST 请求并验证输入类型文件
- 如何使用AJAX将数据POST到php文件
- 使用GET将数据POST到restfull api
- 为什么onreadystatechange在尝试将数据POST到php脚本时失败
- 如何从Angular将数据POST到WebAPI控制器's$http服务
- AJAX:将数据POST到不同的url
- AngularJS:将数据POST到外部REST API
- PHP使用AJAX将数据POST到另一个页面
- JQuery自动完成-多个数据post不工作
- 如何从HTML表单中获取数据post进度
- 如何使用Javascript (Ajax)将表单数据POST到外部PHP文件
- 博客代码数据:post.Url用作带有图像按钮的可点击链接
- fetch-多部分/表单数据POST中缺少边界
- 使用XMLHttpRequest将数据POST到CGI文件会导致BadHeader