Отправка сообщений из форм через ajax

Исторический материал из архива сайта. Указанные услуги и контакты относятся ко времени публикации и не являются действующим предложением.

Создание сайтов

Создание сайтов - отличный способ поддержать бренд уже известной компании, а также заявить о себе на стадии Start-Up. Доверьте создание сайта профессионалам и Ваш сайт станет источником увеличения прибыли компании.
Подробнее

Продвижение сайтов

Интернет-агентство ТОП10 предлагает воспользоваться услугами оптимизации сайтов, а именно продвижением сайтов в поисковых системах и контекстной рекламой, так как благодаря этому Ваш сайт найдут.
Подробнее

Тех. поддержка

Информация о вашей деятельности всегда должна быть актуальной. Именно поэтому обновление контента на сайте необходимо осуществлять своевременно, вслед за изменениями, в вашей организации.
Подробнее
Array
(
    [0] => Array
        (
            [ID] => 94
            [~ID] => 94
            [IBLOCK_ID] => 10
            [~IBLOCK_ID] => 10
            [CODE] => develop
            [~CODE] => develop
            [XML_ID] => 94
            [~XML_ID] => 94
            [NAME] => Создание сайтов
            [~NAME] => Создание сайтов
            [ACTIVE] => Y
            [~ACTIVE] => Y
            [DATE_ACTIVE_FROM] => 
            [~DATE_ACTIVE_FROM] => 
            [DATE_ACTIVE_TO] => 
            [~DATE_ACTIVE_TO] => 
            [SORT] => 10
            [~SORT] => 10
            [PREVIEW_TEXT] => Создание сайтов - отличный способ поддержать бренд уже известной компании, а также заявить о себе на стадии Start-Up. Доверьте создание сайта профессионалам и Ваш сайт станет источником увеличения прибыли компании.
            [~PREVIEW_TEXT] => Создание сайтов - отличный способ поддержать бренд уже известной компании, а также заявить о себе на стадии Start-Up. Доверьте создание сайта профессионалам и Ваш сайт станет источником увеличения прибыли компании.
            [PREVIEW_TEXT_TYPE] => text
            [~PREVIEW_TEXT_TYPE] => text
            [DETAIL_TEXT] => 
            [~DETAIL_TEXT] => 
            [DETAIL_TEXT_TYPE] => text
            [~DETAIL_TEXT_TYPE] => text
            [DATE_CREATE] => 05.10.2013 21:08:46
            [~DATE_CREATE] => 05.10.2013 21:08:46
            [CREATED_BY] => 1
            [~CREATED_BY] => 1
            [TIMESTAMP_X] => 02.07.2014 13:57:14
            [~TIMESTAMP_X] => 02.07.2014 13:57:14
            [MODIFIED_BY] => 1
            [~MODIFIED_BY] => 1
            [TAGS] => 
            [~TAGS] => 
            [IBLOCK_SECTION_ID] => 10
            [~IBLOCK_SECTION_ID] => 10
            [DETAIL_PAGE_URL] => 
            [~DETAIL_PAGE_URL] => 
            [DETAIL_PICTURE] => 
            [~DETAIL_PICTURE] => 
            [PREVIEW_PICTURE] => 
            [~PREVIEW_PICTURE] => 
            [LANG_DIR] => /
            [~LANG_DIR] => /
            [EXTERNAL_ID] => 94
            [~EXTERNAL_ID] => 94
            [IBLOCK_TYPE_ID] => ad_block
            [~IBLOCK_TYPE_ID] => ad_block
            [IBLOCK_CODE] => ad
            [~IBLOCK_CODE] => ad
            [IBLOCK_EXTERNAL_ID] => 
            [~IBLOCK_EXTERNAL_ID] => 
            [LID] => s1
            [~LID] => s1
            [ACTIVE_FROM] => 
            [ACTIVE_TO] => 
            [EDIT_LINK] => 
            [DELETE_LINK] => 
            [IPROPERTY_VALUES] => Array
                (
                )

            [PROPERTIES] => Array
                (
                    [LINK] => Array
                        (
                            [ID] => 17
                            [TIMESTAMP_X] => 2013-10-05 23:06:43
                            [IBLOCK_ID] => 10
                            [NAME] => Ссылка
                            [ACTIVE] => Y
                            [SORT] => 500
                            [CODE] => LINK
                            [DEFAULT_VALUE] => 
                            [PROPERTY_TYPE] => S
                            [ROW_COUNT] => 1
                            [COL_COUNT] => 20
                            [LIST_TYPE] => L
                            [MULTIPLE] => N
                            [XML_ID] => 
                            [FILE_TYPE] => 
                            [MULTIPLE_CNT] => 5
                            [TMP_ID] => 
                            [LINK_IBLOCK_ID] => 0
                            [WITH_DESCRIPTION] => Y
                            [SEARCHABLE] => N
                            [FILTRABLE] => N
                            [IS_REQUIRED] => N
                            [VERSION] => 1
                            [USER_TYPE] => 
                            [USER_TYPE_SETTINGS] => 
                            [HINT] => 
                            [~NAME] => Ссылка
                            [~DEFAULT_VALUE] => 
                            [VALUE_ENUM] => 
                            [VALUE_XML_ID] => 
                            [VALUE_SORT] => 
                            [VALUE] => /services/127/
                            [PROPERTY_VALUE_ID] => 923
                            [DESCRIPTION] => 
                            [~VALUE] => /services/127/
                            [~DESCRIPTION] => 
                        )

                )

            [DISPLAY_PROPERTIES] => Array
                (
                    [LINK] => Array
                        (
                            [ID] => 17
                            [TIMESTAMP_X] => 2013-10-05 23:06:43
                            [IBLOCK_ID] => 10
                            [NAME] => Ссылка
                            [ACTIVE] => Y
                            [SORT] => 500
                            [CODE] => LINK
                            [DEFAULT_VALUE] => 
                            [PROPERTY_TYPE] => S
                            [ROW_COUNT] => 1
                            [COL_COUNT] => 20
                            [LIST_TYPE] => L
                            [MULTIPLE] => N
                            [XML_ID] => 
                            [FILE_TYPE] => 
                            [MULTIPLE_CNT] => 5
                            [TMP_ID] => 
                            [LINK_IBLOCK_ID] => 0
                            [WITH_DESCRIPTION] => Y
                            [SEARCHABLE] => N
                            [FILTRABLE] => N
                            [IS_REQUIRED] => N
                            [VERSION] => 1
                            [USER_TYPE] => 
                            [USER_TYPE_SETTINGS] => 
                            [HINT] => 
                            [~NAME] => Ссылка
                            [~DEFAULT_VALUE] => 
                            [VALUE_ENUM] => 
                            [VALUE_XML_ID] => 
                            [VALUE_SORT] => 
                            [VALUE] => /services/127/
                            [PROPERTY_VALUE_ID] => 923
                            [DESCRIPTION] => 
                            [~VALUE] => /services/127/
                            [~DESCRIPTION] => 
                            [DISPLAY_VALUE] => /services/127/
                        )

                )

            [PRODUCT_PROPERTIES] => Array
                (
                )

            [PRODUCT_PROPERTIES_FILL] => Array
                (
                )

            [PRICES] => Array
                (
                )

            [PRICE_MATRIX] => 
            [MIN_PRICE] => 
            [CAN_BUY] => 
            [~BUY_URL] => /?action=BUY&id=94
            [BUY_URL] => /?action=BUY&id=94
            [~ADD_URL] => /?action=ADD2BASKET&id=94
            [ADD_URL] => /?action=ADD2BASKET&id=94
            [~COMPARE_URL] => /?action=ADD_TO_COMPARE_LIST&id=94
            [COMPARE_URL] => /?action=ADD_TO_COMPARE_LIST&id=94
            [~SUBSCRIBE_URL] => /?action=SUBSCRIBE_PRODUCT&id=94
            [SUBSCRIBE_URL] => /?action=SUBSCRIBE_PRODUCT&id=94
            [SECTION] => Array
                (
                    [PATH] => Array
                        (
                        )

                )

        )

    [1] => Array
        (
            [ID] => 95
            [~ID] => 95
            [IBLOCK_ID] => 10
            [~IBLOCK_ID] => 10
            [CODE] => seo
            [~CODE] => seo
            [XML_ID] => 95
            [~XML_ID] => 95
            [NAME] => Продвижение сайтов
            [~NAME] => Продвижение сайтов
            [ACTIVE] => Y
            [~ACTIVE] => Y
            [DATE_ACTIVE_FROM] => 
            [~DATE_ACTIVE_FROM] => 
            [DATE_ACTIVE_TO] => 
            [~DATE_ACTIVE_TO] => 
            [SORT] => 20
            [~SORT] => 20
            [PREVIEW_TEXT] => Интернет-агентство ТОП10 предлагает воспользоваться услугами оптимизации сайтов, а именно продвижением сайтов в поисковых системах и контекстной рекламой, так как благодаря этому Ваш сайт найдут.
            [~PREVIEW_TEXT] => Интернет-агентство ТОП10 предлагает воспользоваться услугами оптимизации сайтов, а именно продвижением сайтов в поисковых системах и контекстной рекламой, так как благодаря этому Ваш сайт найдут.
            [PREVIEW_TEXT_TYPE] => text
            [~PREVIEW_TEXT_TYPE] => text
            [DETAIL_TEXT] => 
            [~DETAIL_TEXT] => 
            [DETAIL_TEXT_TYPE] => text
            [~DETAIL_TEXT_TYPE] => text
            [DATE_CREATE] => 05.10.2013 21:09:57
            [~DATE_CREATE] => 05.10.2013 21:09:57
            [CREATED_BY] => 1
            [~CREATED_BY] => 1
            [TIMESTAMP_X] => 02.07.2014 13:57:21
            [~TIMESTAMP_X] => 02.07.2014 13:57:21
            [MODIFIED_BY] => 1
            [~MODIFIED_BY] => 1
            [TAGS] => 
            [~TAGS] => 
            [IBLOCK_SECTION_ID] => 10
            [~IBLOCK_SECTION_ID] => 10
            [DETAIL_PAGE_URL] => 
            [~DETAIL_PAGE_URL] => 
            [DETAIL_PICTURE] => 
            [~DETAIL_PICTURE] => 
            [PREVIEW_PICTURE] => 
            [~PREVIEW_PICTURE] => 
            [LANG_DIR] => /
            [~LANG_DIR] => /
            [EXTERNAL_ID] => 95
            [~EXTERNAL_ID] => 95
            [IBLOCK_TYPE_ID] => ad_block
            [~IBLOCK_TYPE_ID] => ad_block
            [IBLOCK_CODE] => ad
            [~IBLOCK_CODE] => ad
            [IBLOCK_EXTERNAL_ID] => 
            [~IBLOCK_EXTERNAL_ID] => 
            [LID] => s1
            [~LID] => s1
            [ACTIVE_FROM] => 
            [ACTIVE_TO] => 
            [EDIT_LINK] => 
            [DELETE_LINK] => 
            [IPROPERTY_VALUES] => Array
                (
                )

            [PROPERTIES] => Array
                (
                    [LINK] => Array
                        (
                            [ID] => 17
                            [TIMESTAMP_X] => 2013-10-05 23:06:43
                            [IBLOCK_ID] => 10
                            [NAME] => Ссылка
                            [ACTIVE] => Y
                            [SORT] => 500
                            [CODE] => LINK
                            [DEFAULT_VALUE] => 
                            [PROPERTY_TYPE] => S
                            [ROW_COUNT] => 1
                            [COL_COUNT] => 20
                            [LIST_TYPE] => L
                            [MULTIPLE] => N
                            [XML_ID] => 
                            [FILE_TYPE] => 
                            [MULTIPLE_CNT] => 5
                            [TMP_ID] => 
                            [LINK_IBLOCK_ID] => 0
                            [WITH_DESCRIPTION] => Y
                            [SEARCHABLE] => N
                            [FILTRABLE] => N
                            [IS_REQUIRED] => N
                            [VERSION] => 1
                            [USER_TYPE] => 
                            [USER_TYPE_SETTINGS] => 
                            [HINT] => 
                            [~NAME] => Ссылка
                            [~DEFAULT_VALUE] => 
                            [VALUE_ENUM] => 
                            [VALUE_XML_ID] => 
                            [VALUE_SORT] => 
                            [VALUE] => /services/128/
                            [PROPERTY_VALUE_ID] => 924
                            [DESCRIPTION] => 
                            [~VALUE] => /services/128/
                            [~DESCRIPTION] => 
                        )

                )

            [DISPLAY_PROPERTIES] => Array
                (
                    [LINK] => Array
                        (
                            [ID] => 17
                            [TIMESTAMP_X] => 2013-10-05 23:06:43
                            [IBLOCK_ID] => 10
                            [NAME] => Ссылка
                            [ACTIVE] => Y
                            [SORT] => 500
                            [CODE] => LINK
                            [DEFAULT_VALUE] => 
                            [PROPERTY_TYPE] => S
                            [ROW_COUNT] => 1
                            [COL_COUNT] => 20
                            [LIST_TYPE] => L
                            [MULTIPLE] => N
                            [XML_ID] => 
                            [FILE_TYPE] => 
                            [MULTIPLE_CNT] => 5
                            [TMP_ID] => 
                            [LINK_IBLOCK_ID] => 0
                            [WITH_DESCRIPTION] => Y
                            [SEARCHABLE] => N
                            [FILTRABLE] => N
                            [IS_REQUIRED] => N
                            [VERSION] => 1
                            [USER_TYPE] => 
                            [USER_TYPE_SETTINGS] => 
                            [HINT] => 
                            [~NAME] => Ссылка
                            [~DEFAULT_VALUE] => 
                            [VALUE_ENUM] => 
                            [VALUE_XML_ID] => 
                            [VALUE_SORT] => 
                            [VALUE] => /services/128/
                            [PROPERTY_VALUE_ID] => 924
                            [DESCRIPTION] => 
                            [~VALUE] => /services/128/
                            [~DESCRIPTION] => 
                            [DISPLAY_VALUE] => /services/128/
                        )

                )

            [PRODUCT_PROPERTIES] => Array
                (
                )

            [PRODUCT_PROPERTIES_FILL] => Array
                (
                )

            [PRICES] => Array
                (
                )

            [PRICE_MATRIX] => 
            [MIN_PRICE] => 
            [CAN_BUY] => 
            [~BUY_URL] => /?action=BUY&id=95
            [BUY_URL] => /?action=BUY&id=95
            [~ADD_URL] => /?action=ADD2BASKET&id=95
            [ADD_URL] => /?action=ADD2BASKET&id=95
            [~COMPARE_URL] => /?action=ADD_TO_COMPARE_LIST&id=95
            [COMPARE_URL] => /?action=ADD_TO_COMPARE_LIST&id=95
            [~SUBSCRIBE_URL] => /?action=SUBSCRIBE_PRODUCT&id=95
            [SUBSCRIBE_URL] => /?action=SUBSCRIBE_PRODUCT&id=95
            [SECTION] => Array
                (
                    [PATH] => Array
                        (
                        )

                )

        )

    [2] => Array
        (
            [ID] => 96
            [~ID] => 96
            [IBLOCK_ID] => 10
            [~IBLOCK_ID] => 10
            [CODE] => support
            [~CODE] => support
            [XML_ID] => 96
            [~XML_ID] => 96
            [NAME] => Тех. поддержка
            [~NAME] => Тех. поддержка
            [ACTIVE] => Y
            [~ACTIVE] => Y
            [DATE_ACTIVE_FROM] => 
            [~DATE_ACTIVE_FROM] => 
            [DATE_ACTIVE_TO] => 
            [~DATE_ACTIVE_TO] => 
            [SORT] => 30
            [~SORT] => 30
            [PREVIEW_TEXT] => Информация о вашей деятельности всегда должна быть актуальной. Именно поэтому обновление контента на сайте необходимо осуществлять своевременно, вслед за изменениями, в вашей организации.
            [~PREVIEW_TEXT] => Информация о вашей деятельности всегда должна быть актуальной. Именно поэтому обновление контента на сайте необходимо осуществлять своевременно, вслед за изменениями, в вашей организации.
            [PREVIEW_TEXT_TYPE] => text
            [~PREVIEW_TEXT_TYPE] => text
            [DETAIL_TEXT] => 
            [~DETAIL_TEXT] => 
            [DETAIL_TEXT_TYPE] => text
            [~DETAIL_TEXT_TYPE] => text
            [DATE_CREATE] => 05.10.2013 21:10:27
            [~DATE_CREATE] => 05.10.2013 21:10:27
            [CREATED_BY] => 1
            [~CREATED_BY] => 1
            [TIMESTAMP_X] => 02.07.2014 13:57:30
            [~TIMESTAMP_X] => 02.07.2014 13:57:30
            [MODIFIED_BY] => 1
            [~MODIFIED_BY] => 1
            [TAGS] => 
            [~TAGS] => 
            [IBLOCK_SECTION_ID] => 10
            [~IBLOCK_SECTION_ID] => 10
            [DETAIL_PAGE_URL] => 
            [~DETAIL_PAGE_URL] => 
            [DETAIL_PICTURE] => 
            [~DETAIL_PICTURE] => 
            [PREVIEW_PICTURE] => 
            [~PREVIEW_PICTURE] => 
            [LANG_DIR] => /
            [~LANG_DIR] => /
            [EXTERNAL_ID] => 96
            [~EXTERNAL_ID] => 96
            [IBLOCK_TYPE_ID] => ad_block
            [~IBLOCK_TYPE_ID] => ad_block
            [IBLOCK_CODE] => ad
            [~IBLOCK_CODE] => ad
            [IBLOCK_EXTERNAL_ID] => 
            [~IBLOCK_EXTERNAL_ID] => 
            [LID] => s1
            [~LID] => s1
            [ACTIVE_FROM] => 
            [ACTIVE_TO] => 
            [EDIT_LINK] => 
            [DELETE_LINK] => 
            [IPROPERTY_VALUES] => Array
                (
                )

            [PROPERTIES] => Array
                (
                    [LINK] => Array
                        (
                            [ID] => 17
                            [TIMESTAMP_X] => 2013-10-05 23:06:43
                            [IBLOCK_ID] => 10
                            [NAME] => Ссылка
                            [ACTIVE] => Y
                            [SORT] => 500
                            [CODE] => LINK
                            [DEFAULT_VALUE] => 
                            [PROPERTY_TYPE] => S
                            [ROW_COUNT] => 1
                            [COL_COUNT] => 20
                            [LIST_TYPE] => L
                            [MULTIPLE] => N
                            [XML_ID] => 
                            [FILE_TYPE] => 
                            [MULTIPLE_CNT] => 5
                            [TMP_ID] => 
                            [LINK_IBLOCK_ID] => 0
                            [WITH_DESCRIPTION] => Y
                            [SEARCHABLE] => N
                            [FILTRABLE] => N
                            [IS_REQUIRED] => N
                            [VERSION] => 1
                            [USER_TYPE] => 
                            [USER_TYPE_SETTINGS] => 
                            [HINT] => 
                            [~NAME] => Ссылка
                            [~DEFAULT_VALUE] => 
                            [VALUE_ENUM] => 
                            [VALUE_XML_ID] => 
                            [VALUE_SORT] => 
                            [VALUE] => /services/129/
                            [PROPERTY_VALUE_ID] => 925
                            [DESCRIPTION] => 
                            [~VALUE] => /services/129/
                            [~DESCRIPTION] => 
                        )

                )

            [DISPLAY_PROPERTIES] => Array
                (
                    [LINK] => Array
                        (
                            [ID] => 17
                            [TIMESTAMP_X] => 2013-10-05 23:06:43
                            [IBLOCK_ID] => 10
                            [NAME] => Ссылка
                            [ACTIVE] => Y
                            [SORT] => 500
                            [CODE] => LINK
                            [DEFAULT_VALUE] => 
                            [PROPERTY_TYPE] => S
                            [ROW_COUNT] => 1
                            [COL_COUNT] => 20
                            [LIST_TYPE] => L
                            [MULTIPLE] => N
                            [XML_ID] => 
                            [FILE_TYPE] => 
                            [MULTIPLE_CNT] => 5
                            [TMP_ID] => 
                            [LINK_IBLOCK_ID] => 0
                            [WITH_DESCRIPTION] => Y
                            [SEARCHABLE] => N
                            [FILTRABLE] => N
                            [IS_REQUIRED] => N
                            [VERSION] => 1
                            [USER_TYPE] => 
                            [USER_TYPE_SETTINGS] => 
                            [HINT] => 
                            [~NAME] => Ссылка
                            [~DEFAULT_VALUE] => 
                            [VALUE_ENUM] => 
                            [VALUE_XML_ID] => 
                            [VALUE_SORT] => 
                            [VALUE] => /services/129/
                            [PROPERTY_VALUE_ID] => 925
                            [DESCRIPTION] => 
                            [~VALUE] => /services/129/
                            [~DESCRIPTION] => 
                            [DISPLAY_VALUE] => /services/129/
                        )

                )

            [PRODUCT_PROPERTIES] => Array
                (
                )

            [PRODUCT_PROPERTIES_FILL] => Array
                (
                )

            [PRICES] => Array
                (
                )

            [PRICE_MATRIX] => 
            [MIN_PRICE] => 
            [CAN_BUY] => 
            [~BUY_URL] => /?action=BUY&id=96
            [BUY_URL] => /?action=BUY&id=96
            [~ADD_URL] => /?action=ADD2BASKET&id=96
            [ADD_URL] => /?action=ADD2BASKET&id=96
            [~COMPARE_URL] => /?action=ADD_TO_COMPARE_LIST&id=96
            [COMPARE_URL] => /?action=ADD_TO_COMPARE_LIST&id=96
            [~SUBSCRIBE_URL] => /?action=SUBSCRIBE_PRODUCT&id=96
            [SUBSCRIBE_URL] => /?action=SUBSCRIBE_PRODUCT&id=96
            [SECTION] => Array
                (
                    [PATH] => Array
                        (
                        )

                )

        )

)

Отправка сообщений из форм через ajax

Отправка сообщений из форм через ajax

0
15.09.201317:5615 Сентября 2013 17:56
Постановка задачи: при отправке данных с формы пользователь должен оставаться на той же странице, а во всплывающем окне должно показываться сообщение об успешной отправке.
Такую задачу недавно поставил клиент по технической поддержке сайта.
В общих чертах решение задачи кажется следующим:
  1. Через AJAX загружаем страницу с формой
  2. Анализируем содержимое
  3. Выводим соответствующее окно (в нашем случае это был fancybox
И так по порядку, со всеми подводными камнями:

Для того что бы определить результат обработки AJAX выделим области с выводом ошибки и сообщения в шаблоне компонента "bitrix:form.result.new":
Код
<?if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();?>
<?if($arResult["isFormErrors"] == "Y" && $arResult["FORM_ERRORS_TEXT"]):?>
   <a href="#form-errors" class="form-errors fancybox-mes">Ошибки формы</a>
   <div><div id="form-errors"><?=$arResult["FORM_ERRORS_TEXT"];?></div></div>
<?endif;?>

<?if($arResult["FORM_NOTE"]):?>
   <a href="#form-note" class="form-note fancybox-mes">Сообщение из формы</a>
   <div><div id="form-note"><?=$arResult["FORM_NOTE"]?></div></div>
<?endif;?>

<?if($arResult["isFormNote"] != "Y" && $arResult["isFormErrors"] != "Y" && !$arResult["FORM_ERRORS_TEXT"] && !$arResult["FORM_NOTE"]):?> 
...

Нужно помнить что страница обработки формы должна находиться на странице формы, т.е. параметры компонента примерно такие:
Код
<?$APPLICATION->IncludeComponent(
   "bitrix:form.result.new",
   "ask-a-question",
   Array(
      "WEB_FORM_ID" => "72",
      "IGNORE_CUSTOM_TEMPLATE" => "Y",
      "USE_EXTENDED_ERRORS" => "N",
      "SEF_MODE" => "N",
      "CACHE_TYPE" => "A",
      "CACHE_TIME" => "3600",
      "LIST_URL" => "",
      "EDIT_URL" => "",
      "SUCCESS_URL" => "",
      "CHAIN_ITEM_TEXT" => "",
      "CHAIN_ITEM_LINK" => "",
      "VARIABLE_ALIASES" => Array(
         "WEB_FORM_ID" => "WEB_FORM_ID",
         "RESULT_ID" => "RESULT_ID"
      )
   )
);?>

Еще такой момент - что бы подгружаемый скрипт выполнялся лишь один раз, а не при каждом выполнении AJAX запроса (была ситуация, что (form).submit(); срабатывал 2, 4, 8 раз...):
1. Называем его как-нибудь, только не script.js, например "script-ajax.js"
2. Подключаем скрипт вручную в шаблоне:
Код
<?if($arResult["isFormNote"] != "Y" && $arResult["isFormErrors"] != "Y" && !$arResult["FORM_ERRORS_TEXT"] && !$arResult["FORM_NOTE"]):?> 
   <div class="form-ask"> 
      ... 
   </div>
   <div id="show-message-lightbox" class="show-message-lightbox"></div>
   <script type="text/javascript" src="<?=$templateFolder;?>/script-ajax.js"></script>
<?endif;?>

Далее, есть такой момент - при неправильном заполнении формы пользователю должно выдаться сообщение об этом и параллельно Битрикс (автоматом) сбрасывает капчу. То есть её в форме необходимо будет обновить, поэтому создаю файл в /bitrix/tools/captcha_ajax.php с кодом:
Код
<?
   require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");
   echo $code=$APPLICATION->CaptchaGetCode();
?>

По AJAX запросу этот код сгенерирует ключ для новой капчи. Запрос сделаем в файле script-ajax.js, код которого заключим в прелоадер (не знаю, как еще это назвать):
Код
$(document).ready(function () {  
   ...
});

В итоге наш код JS-скрипта разделится на 3 части - отправка данных формы, обновление капчи на странице и настройки всплывающего окна fancybox.
Итак, первая часть, самая сложная и важная:
Код
   // Отправка AJAX запроса
   $('.form-ask form').submit(function(e) {      // Обработка отправки данных формы
      e.preventDefault();                  // Сброс стандартного обработчика формы
      formData = $(this).serialize() + "&web_form_submit=Отправить";   // Сохраняем массив введенных данных включая значение кнопки "Отправить", без этого компонент Битрикса не примет данные
      
      $.post(      // Отправим POST запрос серверу
         $(this).attr('action') + '?AJAX_REQUEST=Y',   // Текущая страница с дописанным параметром - по нему подключается пустой шаблон с одним #WORK_AREA#
         formData,
         function(response){
            var message = $("#show-message-lightbox").html(response);         // Сохраняем загруженные данные на странице в невидимом блоке

            if(message.find(".fancybox-mes").length) {                        // Если в этих данных есть элементы для показа (ошибка или сообщение)
               var fancy_html = $(message.find(".fancybox-mes + div")).html();
               $.fancybox({content: fancy_html});
               captcha_update();         // Сбросим капчу в форме
            }

            if(message.find(".form-note").length) {   // Если данные формы приняты сбросим все поля
               $('.form-ask input').val(" ");
               $('.form-ask textarea').val(" ");
            }
         }
      );

      return false;
   });


Основные строки я здесь прокомментировал. Посмотрим на функцию обновления капчи:
Код
   // Обновить капчу
   function captcha_update() {
      $.ajax({
         url: "/bitrix/tools/captcha_ajax.php",
         success: function(data){
            $(".form-ask form").find('.antispam input[name="captcha_sid"]').val(data);
            $(".form-ask form").find('.antispam input[name="captcha_sid"] + img').attr("src", "/bitrix/tools/captcha.php?captcha_sid="+data);
         }
      });
   }

Тут всё просто и понятно без комментариев. Дальше код настроек всплывающего окна fancybox, код тоже примитивен, комментировать не буду, привожу для общего понимания картины:
Код
   // Настройки всплывающего окна
   $(".fancybox-mes").fancybox({
      "type": "iframe",
      "padding": 10,
      "imageScale": false,
      "zoomOpacity": false,
      "zoomSpeedIn": 1000,
      "zoomSpeedOut": 1000,
      "width": 525,
      "height": 300,
      "overlayShow": true,
      "overlayOpacity": 0.8,
      "hideOnContentClick": false,
      "centerOnScroll": true
   });

Ну вот. Теперь данные формы успешно отправляются с помощью AJAX
Ваше имя*
 
E-mail
Тема

Добавить файлы
Загрузить файлы
#name#
#size#
 
#name#
Файлы:
Перетащите один или несколько файлов в эту область
или выберите файл на компьютере
Файлы:
Загрузить файлы
Код подтверждения (символы на картинке)*
Отправить
0
19 Сентября 2013 8:55
P.S. Следует помнить, если пишите код в result_modifier.php, то нужно убедиться в подключении модуля iblock (для соответствующих действий):
Код
if(CModule::IncludeModule("iblock")) {}