2012-12-10 17 views
11

Mam pewne problemy z rozszyfrowaniem dwuznaczność pomiędzyJakie jest prawidłowe użycie funkcji res.render() i res.redirect() w Expressie?

res.render('viewname', {msg: 'Message' }) 

i

res.redirect('route') 

Funkcja przekierowanie nie pozwoli Ci przejść przez „wiadomość”, ale nadal może chcieć, a renderowanie funkcja wyrenderuje widok, ale nie zmieni adresu URL Twojej aplikacji internetowej i nie uruchomi funkcji wymaganej dla twojej trasy.

Sytuacja, którą mam, polega na tym, że mam formularz zaproszenia, który zawiera akcję, która zmienia mój adres URL, i uruchamia funkcję na tej trasie, która oddzwoni do sukcesu i nie powiodła się, i chciałbym przekierować użytkowników do Pulpit nawigacyjny z komunikatem informującym o sukcesie lub niepowodzeniu.

+2

od tego, co opisujesz zalecana zdefiniować POST i GET. w żądaniu POST chcesz przekierować do GET i do GET, który chcesz wyrenderować. – c0deNinja

Odpowiedz

18

Spójrz na connect-flash, aby użyć stylu flashowania wiadomości w szynach.

res.render() spowoduje, widok z danych przekazywanych do niej res.redirect() przekieruje użytkownika do innej strony (w tym momencie zaczyna się żądanie)

+1

Awesome - thank you. To nie jest pierwszy raz, kiedy coś zostało usunięte z Express, było niesamowite - nie wiem dlaczego ciągle zabierają rzeczy, jak flash mem i EJS partials – netpoetica

+1

Myślę, że jeśli inna biblioteka wyposażona jest w funkcję, to ją usuwają. Zgadzam się głównie z tą logiką, z wyjątkiem tego, że może to być frustrujące, gdy usuwają rzeczy, na których polegasz. Używam ejs-locals, aby odzyskać układy/bloki/części. – chovy

+1

Co jeśli chcę przekierować i wysłać dane w tym samym czasie? – stylishCoder

Powiązane problemy