基于用户input的dynamic网站内容

你好我正在使用Node JS和Jade创build一个网站。 我试图在网站上创build一个表单,根据用户input显示不同数量的字段,但我似乎无法得到这个工作。 我究竟做错了什么?

在我的Routes.js中,我有这些页面:

app.post('/newBlank', function(req, res) { if (req.session.user == null){ // if user is not logged-in redirect back to login page // res.redirect('/'); } else{ fields = req.body.id console.log(fields + " here") res.render('newBlank', {fieldsNo: req.body.id}); console.log(req.body.id) } }); app.get('/newBlank', function(req, res) { if (req.session.user == null){ // if user is not logged-in redirect back to login page // res.redirect('/'); } else{ fields = req.body.id res.render('newBlank', { title : 'New Blank', company : 'Company', fieldsNo : fields, udata : req.session.user }); } }); 

newBlank.jade访问newBlank.js和blank.jade

blank.jade如下:

 #noform-form-container.left-center form(method="post")#new-form.form-horizontal.well h2 h6#sub1 How many fields would you like? hr .form-group .form-left-buttons input(type="number", value = 2)#NofFields button(type='button')#blank-form-btn1.btn.btn-default .form-group 

PreviewImg外形container.left中心

 form(method="post")#PreviewImg-form.form-horizontal.well h2 h6#sub1 This is what your form will look like on mobile hr .form-group .form-previmg img(src="images/MobileView.png") 

new-fields-form-container.center

 form(method="post")#new-fields.form-title.well h2 .form-group .form-center-title input(type="text", value="Insert Form Title Here", id="FormTitle") .form-group input(type="text", value=fieldsNo) - for(var i = 0; i < fieldsNo; i++) hr .form-group .form-left-buttons input(type="text", value="Test", id="Test") 

最后在newBlank.js内是:

 this.SetNoFields = function() { $.ajax({ url: '/newBlank', type: 'POST', data: { id: $('#NofFields').val()}, success: function(data){ $('#new-fields-form-container').load(data); } }); } 

所以,页面(newBlank)最初加载了一个GET请求,然后用户在空白处input#NofFieldsinput数字,当按下button时,这个数字通过POST请求发送到同一页面,希望基于用户input重新加载具有大量字段的页面。 但是,目前在页面上没有活动发生。 我可以看到通过控制台日志,确实发送的号码。 通过Google的Inspect,我发现了一个错误:

语法错误,无法识别的expression式:html> <html>

此错误只出现在post被调用时,我不确定为什么。

对不起,我在这里写了很多,但是,我错在哪里,我怎么才能让页面刷新基于用户input的字段数量?

修复!

所以,这是我所做的解决这个问题,希望它可以帮助别人。

我修改了newBlank.js中的函数,如下所示:

 this.SetNoFields = function() { $.ajax({ url: '/new', type: 'POST', data: { id: $('#NofFields').val()}, success: function(data){ $('#new-fields-form-container').load(data); } }); } 

在我的routes.js中,我为'/ new'创build了一个app.post,并创build了一个名为fields(等于用户input的数字)的variables,然后发送'blankForm'

 app.post('/new', function(req, res) { if(req.session.user == null){ res.redirect('/'); } else { fields = req.body.id res.send('blankForm'); } }); 

然后,我在我的路线中修改了我的app.get'/ blankForm',如下所示:

 app.get('/blankForm', function(req, res) { if (req.session.user == null){ // if user is not logged-in redirect back to login page // res.redirect('/'); } else{ res.render('blankForm', { fieldsNo : fields, udata : req.session.user }); } }); 

这允许它渲染blankForm Jade文件,并将在app.post('/ new')内创build的字段作为fieldsNo。

我希望这可以帮助那些遇到类似问题的人。