使用node.js和ejs重定向不起作用

时间:2018-09-02 09:59:59

标签: javascript jquery node.js ajax ejs

我花了很多时间对以下问题进行调试,但是并没有解决。每当用户单击按钮并且window.locatoin.redirect和window.location.assign方法不起作用时,都会发生此问题。

这是我的代码index.ejs:

function registration() {
        $.post('/user/register', {
            teamName: $('#teamName').val(),
            faculty: $('#faculty').val(),
            email: $('#emailSignUp').val(),
            password: $('#passwordSignUp').val()
        }).done(
            window.location.assign('/scoreboard')
        )
    }

router.js:

router.post('/user/register', (req, res) => {
    var newUser = {
        teamName: req.body.teamName,
        faculty: req.body.faculty,
        email: req.body.email,
        password: req.body.password
    }
    userModel.create(newUser, (err, user) => {
        if (err) {
            console.log('[Registratoin]: ' + err);
        } else {
            console.log('[Registration]: Done');
            req.session.userID = user._id;
            res.redirect('/scoreboard')
        }
    });
})

router.get('/scoreboard', (req, res) => {
    userModel.find({}).sort('-score').exec((err, teams) => {
        if (err) {
            console.log('[scoreboard]: ' + err)
        }
        else{
            res.render('main/scoreboard', {
                teamInformation: teams
            }
        )
    }
    })
})

测试代码时,我看到正确记录了[Registration]: Done。但重定向不起作用。我应该如何解决?

2 个答案:

答案 0 :(得分:1)

请使用location.href代替location.assign,如下所示:

window.location.href = "/scoreboard";

答案 1 :(得分:0)

HTML5引入了history.pushState()history.replaceState()方法,它们使您可以分别添加和修改历史记录条目。

history.pushState(null, null, "/scoreboard")

here提供了有关处理此类问题的HTML5新功能的更多信息。