这是我的input.jade文件
div
form(action='/wiki/<topic-name>',method='post')
div(data-role='fieldcontain')
fieldset(data-role='controlgroup')
label(for='topicname') Topicname
input(id='topicname',type='text',value='',placeholder='topicname',name='topicname')
div(data-role='fieldcontain')
input(type='submit',value='Sign Up',data-transition='fade', data-theme='c')
在提交时,我希望它重定向到/ wiki / 主题名称 ,其中 主题名称 由用户在表单中输入。
这是我的路线档案。
router.get('/input', function(req, res, next) {
res.render('content/input', { title: 'Express' });
});
router.get('/wiki/:topicname', function(req, res, next) {
var topicname = req.params.topicname;
//other code
});
应该怎么做?有更好的方法吗?
编辑:如果我不想通过邮寄方式传递价值,我该怎么办? (在制作form method =“get”之后)。请注意,我希望它重定向到特定的URI。
答案 0 :(得分:1)
正如另一个回复所指出的,您需要从表单操作中删除:topicname。
假设您正在使用Express 4,从输入字段中获取topicname并重定向到/ wiki / topicname:
//your jade form submits here
router.post('wiki/', function(req, res, next) {
res.redirect('wiki/' + req.body.topicname);
});
//the post redirects to this page, where you do your work
router.get('wiki/:topicname', function(req, res, next) {
var topicname = req.params.topicname;
});
答案 1 :(得分:0)
你应该只在HTTP / Get操作中使用URI params,看看你想要发送一个FORM帖子,你的router.get('/wiki/:topicname'
永远不会被调用,因为它正在等待GET而不是POST。
你应该这样做(代码注释):
div
form(action='/wiki',method='post') /*removed the uri param*/
div(data-role='fieldcontain')
fieldset(data-role='controlgroup')
label(for='topicname') Topicname
input(id='topicname',type='text',value='',placeholder='topicname',name='topicname')
div(data-role='fieldcontain')
input(type='submit',value='Sign Up',data-transition='fade', data-theme='c')
router.get('/input', function(req, res, next) {
res.render('content/input', { title: 'Express' });
});
router.post('/wiki', function(req, res, next) { // now route is getting POST
var topicname = req.body.topicname; // get params from body
//other code
});