Comment puis-je afficher un message flash sans rafraîchissement de la page en utilisant express et connect-flash?
Express connectez-flash affiche uniquement après l'actualisation. Code est dépouillé pour une lecture facile.
"express": "~4.2.0",
"connect-flash": "~0.1.1",
Et voici mon app.js
var express = require('express'),
favicon = require('serve-favicon'),
flash = require('connect-flash');
var app = express();
app.use(cookieParser('---'));
app.use(session({
secret: '---',
saveUninitialized: true,
resave: true}));
app.use(flash());
app.use(function(req, res, next) {
res.locals.messages = req.flash();
next();
});
Dans mon parcours, j'ai essayé quelque chose comme
req.flash('success', {msg: 'Sign Up Success'});
res.redirect('/me/dashboard');
et mon erreur d'affichage msg.jade
modèle est
for msg in messages
div #{msg.msg}
J'obtiens le message seulement après rafraîchissement/redirtect. S'il vous plaît laissez-moi savoir ce que je fais de mal.
J'ai vu cette mais son désuet je pense que
source d'informationauteur niksmac
Vous devez vous connecter pour publier un commentaire.
Vous appelez méthode flash dans le middleware et c'est le comportement attendu du middleware. Middleware va lire le message sur la demande suivante & définir des variables locales selon votre logique.
Comment middle ware fonctionne?
Lorsqu'une demande arrive, il est passé à la première middleware de la fonction, avec une enveloppé ServerResponse objet et une fonction de rappel. Middle ware pouvez choisir d'y répondre par des appels de méthodes sur l'objet de la réponse, et/ou de transmettre la demande à la prochaine couche de la pile par l'appel de la méthode next().
connectez-flash
Le flash est une zone spéciale de la session utilisée pour stocker les messages. Les Messages sont écrits dans le flash et effacé après s'être affiché à l'utilisateur. Le flash est généralement utilisé en combinaison avec les redirections, s'assurer que le message est disponible à la page suivante qui doit être rendu.
J'obtiens le message seulement après rafraîchissement/redirect?
Au-dessus de middleware fera appel à toute demande & de définir la
req.flash()
valeur. De ce fait, vous obtiendrez lareq.flash('success', {msg: 'Sign Up Success'});
valeurs sur chaque côté(suite) demande.Pas sur la page en cours sans rediriger/actualisation de la page.Pour remplacer ce comportement pour obtenir les valeurs sans actualiser vous devez appeler le
req.flash()
fonction qui peut être utilisée pour les messages flash dans votre routeur avecres.locals.messages = req.flash();
.Ex:- Pour Montrer échec de la connexion de message sur la page sans rafraîchir la page et sur la réussite page de redirection après la définition de nouveaux message flash en routeur.
Conclusion: Pour obtenir les messages sur la même page.Remplacer le comportement de l'intergiciel en assignant des valeurs dans le routeur lui-même.