1 Отредактировано Ба Ань (21.09.2016 15:47:56)

Тема: Отправка формы средствами AJAX

Здравствуйте,
Подскажите, пожалуйста, на пальцах, как отправить форму feedback средствами AJAX?
Куда отправлять запрос и как получить ответ?
Остановился на подключении модуля jquery.form

$(document).ready(function() { 
    $('#formFeedback').ajaxForm(function() {
        ???
    }); 
}); 

Приведите простой пример, пожалуйста.
Пытаюсь создать тему с нуля, без сетки на ui kit.

Повысить оценку Понизить оценку

Re: Отправка формы средствами AJAX

$(document).ready(function() { 
  $('#formFeedback').ajaxForm({
        dataType: 'json', //Тип принимаемых данных когда вернётся запрос
        data: {//Параметры для запроса (необязательно)
           dialogWrap: 1
        }, 
        beforeSubmit: function(arr, form, options) {  //(необязательно)
               //Действия до отправки
        },
        success: function(response) {
               //Здесь обрабатываем ответ.
        }
   });
});

Ссылка на документацию к плагину jQuery Form
http://malsup.com/jquery/form/

3 Отредактировано Ба Ань (24.09.2016 16:34:03)

Re: Отправка формы средствами AJAX

Закусило Александр пишет:
$(document).ready(function() { 
  $('#formFeedback').ajaxForm({
        dataType: 'json', //Тип принимаемых данных когда вернётся запрос
        data: {//Параметры для запроса (необязательно)
           dialogWrap: 1
        }, 
        beforeSubmit: function(arr, form, options) {  //(необязательно)
               //Действия до отправки
        },
        success: function(response) {
               //Здесь обрабатываем ответ.
        }
   });
});

Ссылка на документацию к плагину jQuery Form
http://malsup.com/jquery/form/

А как я могу получить в ответе только результат формы, а не страницу полностью? Интересует модуль feedback и comments

UPD: кажется разобрался) Но возник другой вопрос, ajax возвращает мне данные в unicode.

Повысить оценку Понизить оценку

Re: Отправка формы средствами AJAX

А как я могу получить в ответе только результат формы, а не страницу полностью?

При обращении через AJAX наша система отвечает только частью страницы.


UPD: кажется разобрался) Но возник другой вопрос, ajax возвращает мне данные в unicode.

Так и должно быть т.к. все UTF-8. Как и положено. Но это не является проблемой, т.к. Ваш браузер всё преобразует сам пр получении ответа в переменной.

Сам ответ части странице хранится в секции html.

success: function(response) {
         console.log(response);
         console.log(response.html);
}

Код выше покажет в консоли FireBug что к чему.

5 Отредактировано Закусило Александр (26.09.2016 13:26:11)

Re: Отправка формы средствами AJAX

Забыл спросить, а адрес у Вас какой на который вы обращаетесь? У Вас там используется вывод блока? Или содержимого фронт контроллера?

6 Отредактировано Ба Ань (26.09.2016 16:03:40)

Re: Отправка формы средствами AJAX

Закусило Александр пишет:

Забыл спросить, а адрес у Вас какой на который вы обращаетесь? У Вас там используется вывод блока? Или содержимого фронт контроллера?

Спасибо, я уже разобрался))

Итог такой:

Javascript

$(function() {
    $('div.ajaxBlock form.ajaxForm').submit(function(e) {
        var $form = $(this)
        $.ajax({
            type: $form.attr('method'),
            dataType: 'json',
            url: $form.attr('action'),
            data: $form.serialize(),
            success: function(response){
                $('div.ajaxBlock').html(response.html);
            }
        });
        e.preventDefault();
    });
});

TPL

<div class="ajaxBlock">
    <form method="POST" class="ajaxForm" action="{$router->getUrl('название_модуля-block-название_контроллера')}?_block_id={$this_controller->getBlockId()}">
        <input type="text" name="name">
        <input type="submit" value="Отправить">
    </form>
</div>

Повысить оценку +2 Понизить оценку

Re: Отправка формы средствами AJAX

Отлично!