Программа после успешной регистрации отправляет 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 ?
Во-первых, если у тебя ajax запрос к laravel, не надо делать редиректов return redirect(), т.к. jquery - это не axios, который понимает редиректы.
Во-вторых ты же сам тип данных указал. jQuery ждет нормальный JSON (!!!). А при редиректе laravel выдает html
Решений несколько - установи пакет "superbalist/laravel-ajax-redirector", который отслеживает редиректы, если был ajax запрос, и отправляет статус 278 с информацией, куда редиректит. А потом уже в success коллбэке window.location = 'куда редиректить'. Другое решение - самостоятельно выдавать нужный response()->json(), А лучше все вместе применять.
Так все правильно. С чего заголовок ответа должен влиять на редирект в js? Если хотите сделать после этого редирект, то сделайте, чтобы в registerController метод, к которому идет запрос, отправлял просто 200, если все прошло успешно, а в js уже через window.location.href делайте редирект.
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости