Страница EJS не отображается / перенаправляется после метода req.getValidationResult () - PullRequest
0 голосов
/ 22 октября 2018

Ajax-запрос имеет следующий код:

function validate_referral(e){
    // stop default action
  e.preventDefault();

    const  button = this.children[this.children.length-1];
    //Form Handling with ajax

    $.ajax({
        url      : '/validatereferral',
        method   : 'GET',
        data     :  $(this).serialize(),
        dataType :  'json',

     beforeSend : function(http){
            button.style.opacity = '0.7';
            button.innerText = 'Submitting';
            button.setAttribute("disabled", "true");
        },
    });
}

Теперь я проверяю в БД, существует ли код и, если да, я бы хотел отобразить / перенаправить на другую веб-страницу.Но рендер / перенаправление не работает.Любая помощь очень ценится.

router.get('/validatereferral',function(req,res){
    var referralCode = req.body.referralcode;
    if(referralCode == ""){
        data = {msg:"Referral Code is required.",param:"",success:false};
    }else {
        var validation = req.checkBody('referralcode', 'Referral code already exist. Please enter a unique code').isExist_referralcodegen();
            req.getValidationResult()
            .then(function(result) {
                var error = result.array();
                var data;
                if (!(error.length == 0)) {
                    data = {msg: "This is an invalid referral code.", success: false};
                    res.send(data);
                }
                console.log("validgen");
                //res.redirect("http://localhost:3000/signup")
                res.render('signup',{title:"Community Network | Sign Up",header:false,navbar:false});
            })
    }
});

1 Ответ

0 голосов
/ 22 октября 2018

Вы отправляете запрос AJAX.В ответе AJAX перенаправление или рендеринг не будут отражены на вашем сайте.Вместо этого ваш сервер должен ответить на URL, а клиент должен изменить URL браузера.

$.ajax({
    url      : '/validatereferral',
    method   : 'GET',
    data     :  $(this).serialize(),
    dataType :  'json',
    beforeSend : function(http){
        button.style.opacity = '0.7';
        button.innerText = 'Submitting';
        button.setAttribute("disabled", "true");
    },
}).done(function(data) { 
  location.href = data;
});

На сервере

res.send("http://localhost:3000/signup")
...