Не могу в Laravel сделать redirect после ajax запроса?

171
18 июля 2018, 12:20

Программа после успешной регистрации отправляет ajax post запрос в registerController, запрос проходит валидацию, если все успешно должен произойти redirect .

    protected $redirectTo = '/home';

вот мой аякс код

  $.ajax( {
    headers: {
     'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
    },
    type: "POST",
    url: "register",
    data:  someData,
    dataType: "json",
    success: function(data) {
       console.log('success');
    },
    error: function(data) {
       console.log('error');
    }
  });

Проблема в том что после успешной валидации redirect не происходит , в место этого возвращается error со статусом 200 и с содержимым \home страницы:

Почему статус 200 возвращается как ошибка ?

Почему возвращается содержимое \home и не происходит redirect ?

Как сделать чтобы после правильной валидации не было ошибок, и произошел бы redirect в \home ?

Answer 1

Во-первых, если у тебя ajax запрос к laravel, не надо делать редиректов return redirect(), т.к. jquery - это не axios, который понимает редиректы.

Во-вторых ты же сам тип данных указал. jQuery ждет нормальный JSON (!!!). А при редиректе laravel выдает html

Решений несколько - установи пакет "superbalist/laravel-ajax-redirector", который отслеживает редиректы, если был ajax запрос, и отправляет статус 278 с информацией, куда редиректит. А потом уже в success коллбэке window.location = 'куда редиректить'. Другое решение - самостоятельно выдавать нужный response()->json(), А лучше все вместе применять.

Answer 2

Так все правильно. С чего заголовок ответа должен влиять на редирект в js? Если хотите сделать после этого редирект, то сделайте, чтобы в registerController метод, к которому идет запрос, отправлял просто 200, если все прошло успешно, а в js уже через window.location.href делайте редирект.

READ ALSO
Плагин с русской морфологией для elasticsearch 6.2

Плагин с русской морфологией для elasticsearch 6.2

Есть ли уже плагины с русской морфологией для elasticsearch 62 ?

184
Не происходит запись данных в сессию

Не происходит запись данных в сессию

На сайте есть галочка(запомнить меня), всё работаетНо теперь не заносятся данные в неё

133
Как с помощью C++ скачать файл сайта?

Как с помощью C++ скачать файл сайта?

Допустим, есть ссылка http://zzzxx/example

194
Не правильно работает булева функция

Не правильно работает булева функция

Моя функция должна проверять однаковы ли два компонентаНо она всегда false возвращает

209