Я создаю CRUD-систему в L5.2 и использую Bootstrap Modal для отображения форм. Я использовал BootForms и Laravel Bootstrap Modal Form для проверки форм и отображения сообщений об ошибках внутри Modal без его закрытия.Laravel 5.2 & AJAX - сообщение об успешном завершении после перенаправления
В основном я открываю Добавить/редактировать формы внутри модального на той же странице, валидация формы выполняется внутри Modal, и как только все в порядке, данные вставляются в базу данных, а модальный закрывается. После этого страница обновляется и отображает обновленные данные.
Все работает нормально, за исключением случая успеха. Я не могу показать сообщение об успешном завершении на моей странице.
Ниже мой код:
AJAX
$.ajax({
type: "POST",
url: url,
data: data,
dataType: 'json',
cache: false,
contentType: contentType,
processData: false
// Response.
}).always(function(response, status) {
// Reset errors.
resetModalFormErrors();
// Check for errors.
if (response.status == 422) {
var errors = $.parseJSON(response.responseText);
// Iterate through errors object.
$.each(errors, function(field, message) {
console.error(field+': '+message);
var formGroup = $('[name='+field+']', form).closest('.form-group');
formGroup.addClass('has-error').append('<p class="help-block">'+message+'</p>');
});
// Reset submit.
if (submit.is('button')) {
submit.html(submitOriginal);
} else if (submit.is('input')) {
submit.val(submitOriginal);
}
// If successful, reload.
} else {
location.reload();
}
});
Контроллер:
public function store(CustomerRequest $request)
{
Customer::create($request->all());
return redirect('customers')
->with('message', 'New customer added successfully.')
->with('message-type', 'success');
}
Вид: (для отображения сообщения об успешном)
@if(Session::has('message'))
<div class="alert alert-{{ Session::get('message-type') }} alert-dismissable">
<button aria-hidden="true" data-dismiss="alert" class="close" type="button">×</button>
<i class="glyphicon glyphicon-{{ Session::get('message-type') == 'success' ? 'ok' : 'remove'}}"></i> {{ Session::get('message') }}
</div>
@endif
В случае успеха вы можете видеть, что AJAX просто перезагружает страницу, я хочу, чтобы она перенаправлялась на страницу, указанную в функции контроллера, и отображала это сообщение об успешном завершении.
Вы спасли мой день, браво. – Jazzbot
Вам всегда нужно возвращать ответ, чтобы поместить данные в сеансы? Потому что я написал только этот фрагмент кода '$ request-> session() -> flash ('message-type', 'success');' и он не работал. Почему это? – shigg