res.redirect() nie przekierowuje strony

0

Witam, piszę apke to tworzenia ankiet, i potrzebuję zrobić przycisk który pozwoli na usunięcie danej ankiety i przekierowanie na stronę główną. Zrobiłem więc button który onclick będzie wysyłal zapytanie do serwera metodą DELETE, natomiast ID ankiety jest przesyłane w URL.

Plik public/pages/show_poll.hbs

var deleteUrl = location.origin + '/polls/' + '{{{id}}}' + '/delete';
var redirectUrl = location.origin;
function deletePoll() {
  var xhr = new XMLHttpRequest();
  xhr.open('DELETE', deleteUrl, true);
  xhr.onload = function () {
    if (xhr.readyState === 4 && xhr.status === 200) {
      console.log(xhr.response);
    } else {
      console.error(xhr.response);
    }
  }
  xhr.send();

Natomiast po stronie serwera użyłem metody Mongoose findByIdAndRemove(), po czym za pomocą res.redirect() próbowałem przekierować na stronę główną:

Plik app/routes/index.js

app.route('/polls/:id/delete')
    .delete(isLoggedIn, function(req,res) {
         Polls.findByIdAndRemove(req.params.id, function(err, data) {
            if(err) {
              res.status(400).json({responseText: "server- Oops! Something went wrong."});
            } else {
                console.log("Data deleted: " + data);
                res.redirect("/");
            }
        });
    });

Niestety z jakiegoś powodu strona się nie reloaduje, widzę w narzędziach dla programisty (w zakładce Network), że strona startowa jest załadowana a jednak się nie odświeża. Z problemem poradziłem sobie dopiero poprzez przekierowanie na stronę główną po stronie klienta poprzez:

window.location.replace(redirectUrl);

Moje pytanie brzmi: dlaczego strona się nie przekierowuje za pomocą res.redirect? Początkowo myślałem, że jest to związane z metodą DELETE, bo z tego co czytałem to działa trochę inaczej niż POST i przy przekierowaniu metoda nie przestawia się automatycznie na GET, jednakże zmiana zapytania na POST także nie pomogła. Ma ktoś jakiś pomysł, wskazówki, rady, cokolwiek?

https://voter-fcc.herokuapp.comp.com

github: https://github.com/frozenfroggie/voting-app

0

Zapytania ajaxowego nie możesz przekierować (tak to po prostu działa) - musisz zwrócić docelowy URL i ręcznie wykonać location.href = otrzymanyUrl ;.

1 użytkowników online, w tym zalogowanych: 0, gości: 1