Пытаюсь сделать редактирование Личных Данных в аккаунте через ajax. В качестве валидатора использую jQuery Validation Plugin.
В контроллере account\edit.php для ajax я добавил:
public function index() {...
if (($this->request->server['REQUEST_METHOD'] == 'POST') && $this->validate()) {
$this->model_account_customer->editCustomer($this->customer->getId(), $this->request->post);
$this->session->data['success'] = $this->language->get('text_success');
// ajax
if (isset($this->request->post['ajax'])){
echo json_encode(array('msg' =>$this->language->get('text_success')));
return false;
}
// ajax
$this->response->redirect($this->url->link('account/account', '', true));
}
// ajax
if (isset($this->request->post['ajax'])){
if(count($this->error)){
echo json_encode($this->error);
return false;
}
}
// ajax
...
}
мой код обрамлён
// ajax.
а в twig я добавил:
$('#btn-account-edit-popup').on('click', function() {
$.ajax({
url: '{{ action }}',
data: $('.account-edit-form').serialize(),
method: 'post',
success: function (data) {
var response = jQuery.parseJSON(data);
if (response.redirect != undefined) {
location.href = response.redirect;
} else {
$('.alert-danger', $('.account-edit-form')).html(response.warning);
$('.alert-danger', $('.account-edit-form')).show();
}
}
});
});
т.е. при клике на кнопку #btn-account-edit-popup должен выполняться ajax запрос, но вместо этого страница перезагружается и я получаю белую страницу с надписью в json формате :
{"warning":"\u0414\u0430\u043d\u043d\u044b\u0439 E-Mail \u0443\u0436\u0435 \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d!"}
Т.е. ответ я получаю, но как мне в этой ситуации получать ответ по ajax не перезагружая страницу?