2013-05-18 9 views
11

Używam programu Expressjs jako interfejsu API i używam go do przekreślenia tego POST. Chciałbym odpowiedzieć na przekierowanie wysyłane przez ekspres. Sukces z mojego Angular POST zwraca kod HTML strony, którą zamierzam przekierować, ale nic nie dzieje się w moim DOM. Widzę, że moje przekierowanie działa w moim ruchu sieciowym, a dane console.log poniżej zawierają DOM przekierowanej strony.Obsługa przekierowania ekspresowego z Angular POST

Jak odświeżyć DOM, aby odzwierciedlić ten pomyślny test POST lub obsłużyć "przekierowanie"?

ANGULAR KOD:

$http({method: 'POST', url: '/login', data:FormData}). 
     success(function(data, status, headers, config) { 
     console.log(data) 
    }). 
     error(function(data, status, headers, config) { 
    }); 

    $scope.userName = ''; 

Expressjs API:

app.post('/login', function(req, res){ 

     var name = req.param('name', null); // second parameter is default 
    var password = req.param('password', "changeme") 

    // Lots Authenticationcode 
    // returns succesfful login 
    res.redirect('http://localhost:3000/'); 

    }); // end app.post 

console.log (dane) (od Kątowymi sukcesu POST)

returns the HTML of the page I intended to redirect to 

Odpowiedz

14

angularjs jest przeznaczona do pracy jako struktury po stronie klienta połączone z (głównie) interfejsami API RESTfull. Twój interfejs API logowania nie powinien zwracać kodu HTML, powinien zwracać instrukcję , aby przekierować. Tak więc w twoim przypadku powinieneś po prostu zadzwonić pod numer $location.url('/') w swoim oddzwonieniu na numer $http, który użyłby routera Angular do "przekierowania" na "/" (główny adres URL).

+0

Jak można wykryć "instrukcję przekierowania" w Angular? W przykładzie op używającym Express, czy Angular ujawnia jakiś sposób wykrywania res.redirect ("/") pochodzącego z serwera? – Matt

+0

To zależy od programisty, ale w większości przypadków chcesz zwrócić kod statusu 200 (sukces) lub 201 (utworzony), w takim przypadku wystarczy umieścić wywołanie '$ location.url ('/')' w '$ http 'powolne oddzwanianie. – Stewie

+3

jak mogę naśladować tradycyjny sposób publikowania danych w miejscu, gdzie działa res.redirect,

? – OMGPOP

Powiązane problemy