Hej,
Mam taki problem, nie potrafię poradzić sobie z załadowaniem wyniku wywołania AJAXa fizycznie do witryny. Widzę odpowiednią treść w narzędziach deweloperskich przeglądarki (jako odpowiedź z serwera), ale nie wiem, jak ją przekazać teraz do widoku na stronie. Tak wygląda kod:
if($this->form_validation->run()) {
$data['success'] = TRUE;
$this->load->view('Success');
} else {
foreach($this->input->post() as $key => $value) {
if($this->input->post()) {
$data['errors']['agreement'] = form_error('agreement', '<div class="checkbox_error">', '</div>');
$data['errors']['gdpr'] = form_error('gdpr', '<div class="checkbox_error">', '</div>');
}
$data['errors'][$key] = form_error($key);
}
echo json_encode($data);
}
AJAX:
$('#add_user').on('submit', function(e) {
e.preventDefault();
$.ajax({
url : $(this).attr('action'),
method : "post",
data: $(this).serialize(),
dataType: "json",
success: function(result) {
$.each(result.errors, function(key, value) {
var error = $('#' + key);
error.closest('div.form-group')
.find('.error, .checkbox_error').remove();
error.after(value);
});
}
});
});
Przy próbie wysłania błędnie wypełnionego formularza, na stronie pokazują się błędy, natomiast jak cały jest wypełniony, to kliknięcie wysłania formularza nie zmienia zawartości witryny, ale w response widzę pięknie całą treść strony, którą chcę wyświetlić w oknie przeglądarki. Docelowo chcę zastąpić całą stronę nową zawartością, którą widzę w wyniku wywołania AJAX.