• Ajax форма на Битрикс?

    inkoder
    @inkoder
    aolko: И чем не устраивает AJAX_MODE=Y в стандартном компоненте веб-форм? www.inkoder.ru/tmp
    dev.1c-bitrix.ru/community/forums/messages/forum6/...
  • Ajax форма на Битрикс?

    inkoder
    @inkoder
    aolko: Что-то я не совсем понимаю. Что должно получиться в результате правильной работы всей этой штуки? И чем не устраивает AJAX_MODE=Y в стандартном компоненте веб-форм?
  • Ajax форма на Битрикс?

    inkoder
    @inkoder
    aolko:
    <html>
    <head>
    </head>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>
    <body>
    <? 
    error_reporting(E_ALL ^ E_NOTICE); // Для подавления NOTICE на неопределенное значение $_REQUEST['AJAX_REQUEST']
    
     ?>
    <? if ($_REQUEST['AJAX_REQUEST'] !== 'Y') {?>
    <form name='card-form' method='post' action='' id='card-form' class="card-form">
        <? } ?>
    <input type='text' name='text1'>
    <input type='submit' name='go' value='submit!'>
        <? if ($_REQUEST['AJAX_REQUEST'] !== 'Y') {?>
    </form>
    <? } ?>
    
    <script>
    $(document).ready(function () {
        // Отправка AJAX запроса
        $('body').on('submit', '.card-form', function(e) {      // Обработка отправки данных формыc
            e.preventDefault();                  // Сброс стандартного обработчика формы
            formData = $(this).serialize() + "&web_form_submit=Заказать карту";   
    // Сохраняем массив введенных данных включая значение кнопки "Отправить", без этого компонент Битрикса не примет данные
            $.ajax({
                method: "POST",
                url: $(this).attr('action') + '?AJAX_REQUEST=Y',
                data: {formData},
                dataType: "html",
                success: function( data ) {
                    //var FormData = $("#card-form").html(data);
                    $("#card-form").html(data);
                    //$('#card-form').append( data );
                }
            });
            e.preventDefault();
            return false;
        });
    });
    </script>
    </body>


    Вот в таком варианте - мы при запросе обновляем форму, потому. что получаем её обратно.
  • Ajax форма на Битрикс?

    inkoder
    @inkoder

    p.s. почему-то не работает e.preventDefault();


    Надо внимательно смотреть, что возвращает. И возвращать без тега <form></form>, только тело формы.

    Т.к. происходит следующее - тег <form></form>
    вкладывается в уже существующий тег <form></form>

    Да, и битрикс тут совершенно не при чём. :)