Ich mache eine AJAX-Anmeldung mit NodeJS. Dies ist meine aktuellen Code:NodeJS + Ajax + Login-Formular
routes.js:
app.post('/login', (req, res, next) => {
passport.authenticate('local-login', (err, user, info) => {
if (err)
return next(err);
if (!user)
return res.json({type: 'error', response: info});
req.logIn(user, (err) => {
if (err)
return next(err);
//return res.json({type: 'success', response: user});
return res.redirect(req.originalUrl);
//return res.redirect(req.get('referer'));
});
})(req, res, next);
});
custom.js
let login =() => {
$.post("/login", { email: $('#inputUsername').val(), password: $('#inputPassword').val() })
.done((data) => {
if(data.type === 'error'){
$("#logFormError").html('<b>Error:</b> ' + (data.response.message ? data.response.message : data.response));
if(!$("#logFormError").is(":visible"))
$("#logFormError").toggle();
}else{
if($("#logFormError").is(":visible"))
$("#logFormError").toggle();
}
})
.fail((error) => {
$("#logFormError").html('<b>Error:</b> ' + error);
if(!$("#logFormError").is(":visible"))
$("#logFormError").toggle();
})}
replaysController.js (die Seite, die ich jetzt das Anmeldeformular bin Anzeige):
res.render('../views/pages/replays', {replay: replay, user: req.user});
Was ich versuche zu erreichen, ist die Seite, die ich gerade mit den neuen Login-Informationen bin. Ich möchte nicht Client-Javascript verwenden, um mit den verschiedenen Elementen der Seite zu spielen, weil die Seite völlig anders sein kann (Home, Replays, Shop, Foren ...), also sind die Elemente nicht die gleichen und nicht generisch.
Wie Sie sehen können, habe ich bereits res.redirect getestet (req.get ('referer')); und andere, aber die Seite leitet nicht um, sie macht nur die Anfrage und bleibt dort.
Was mache ich falsch?
Nun, ich weiß nicht, wie ich nicht darüber nachgedacht habe. Wie auch immer, gibt es eine andere Möglichkeit, die js-Variablen zu aktualisieren, die in den ejs kompiliert werden, ohne umleiten zu müssen? –