Создание сайтов
Создание сайтов - отличный способ поддержать бренд уже известной компании, а также заявить о себе на стадии 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
Постановка задачи: при отправке данных с формы пользователь должен оставаться на той же странице, а во всплывающем окне должно показываться сообщение об успешной отправке.
Такую задачу недавно поставил клиент по технической поддержке сайта.
В общих чертах решение задачи кажется следующим:
Для того что бы определить результат обработки AJAX выделим области с выводом ошибки и сообщения в шаблоне компонента "bitrix:form.result.new":
Нужно помнить что страница обработки формы должна находиться на странице формы, т.е. параметры компонента примерно такие:
Еще такой момент - что бы подгружаемый скрипт выполнялся лишь один раз, а не при каждом выполнении AJAX запроса (была ситуация, что (form).submit(); срабатывал 2, 4, 8 раз...):
1. Называем его как-нибудь, только не script.js, например "script-ajax.js"
2. Подключаем скрипт вручную в шаблоне:
Далее, есть такой момент - при неправильном заполнении формы пользователю должно выдаться сообщение об этом и параллельно Битрикс (автоматом) сбрасывает капчу. То есть её в форме необходимо будет обновить, поэтому создаю файл в /bitrix/tools/captcha_ajax.php с кодом:
По AJAX запросу этот код сгенерирует ключ для новой капчи. Запрос сделаем в файле script-ajax.js, код которого заключим в прелоадер (не знаю, как еще это назвать):
В итоге наш код JS-скрипта разделится на 3 части - отправка данных формы, обновление капчи на странице и настройки всплывающего окна fancybox.
Итак, первая часть, самая сложная и важная:
Основные строки я здесь прокомментировал. Посмотрим на функцию обновления капчи:
Тут всё просто и понятно без комментариев. Дальше код настроек всплывающего окна fancybox, код тоже примитивен, комментировать не буду, привожу для общего понимания картины:
Ну вот. Теперь данные формы успешно отправляются с помощью AJAX
Такую задачу недавно поставил клиент по технической поддержке сайта.
В общих чертах решение задачи кажется следующим:
- Через AJAX загружаем страницу с формой
- Анализируем содержимое
- Выводим соответствующее окно (в нашем случае это был 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
15.09.201317:5615 Сентября 2013 17:56
Ваше имя*
E-mail
Тема
Добавить файлы
Загрузить файлы
#name#
#size#
#name#
Файлы:
Перетащите один или несколько файлов в эту область
или выберите файл на компьютере
или выберите файл на компьютере
Файлы:
Загрузить файлы
Код подтверждения (символы на картинке)*
Отправить