javascript - 基于用户输入的动态网站内容

标签 javascript jquery html node.js pug

您好,我正在使用 Node JS 和 Jade 创建一个网站。我正在尝试在网站上创建一个表单,该表单将根据用户输入显示不同数量的字段,但是,我似乎无法让它工作。我究竟做错了什么?

在我的 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-form-container.left-center

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 请求加载的,然后用户在空白处的 #NofFields 输入中键入一个数字,当按下按钮时,该数字将通过 POST 请求发送到同一页面,希望根据用户输入重新加载具有一定数量字段的页面。然而,目前页面上没有任何事件发生。通过console log可以看到号码确实发送了。通过谷歌的检查我发现了一个错误:

Syntax error, unrecognized expression: html> < html >

此错误仅在调用帖子时出现,我不确定原因。

抱歉,我在这里写了很多,但是,我哪里出错了,我怎样才能让页面根据用户输入的字段数量进行刷新?

最佳答案

修复了!

所以,这就是我所做的解决此问题的方法,希望它能帮助其他人。

我像这样修改了 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' 创建了一个 app.post 并让它创建一个名为 fields 的变量(等于用户输入的数字)并像这样发送 'blankForm':

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

然后,我在我的 route 修改了我的 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') 中创建的字段变量作为 fieldsNo。

我希望这对遇到类似问题的其他人有所帮助。

关于javascript - 基于用户输入的动态网站内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43850331/

相关文章:

Javascript !和 !!差异

jquery - 等待事件发生,然后再在JQuery中执行其他操作

javascript - 正则表达式 jquery 验证器中字符类的范围乱序

jquery - 通过 Python 脚本编写包含 jQuery 和 CSS 的 HTML 格式的电子邮件。

javascript - PreventDefault 不适用于外部链接?

javascript - 使用 javascript 或 jquery 获取复选框的值并将它们放入输入字段中?

javascript - jQuery 淡入淡出切换多个 div

javascript - jQuery parents ("tr") 淡出不工作

html - 导航栏中的水平对齐

javascript - 嵌套索引路由未在 react-router-dom v6 中呈现