<?
header('Content-Type: text/html; charset=windows-1251');
if(!empty($_POST) && !empty($_POST['phone'])){
define("NO_KEEP_STATISTIC", true); //Не учитываем статистику
define("NOT_CHECK_PERMISSIONS", true); //Не учитываем права доступа
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");
CModule::IncludeModule("iblock");
foreach($_POST as $key => $value)
$_POST[$key] = iconv('UTF-8', 'windows-1251', $value);
$el = new CIBlockElement;
$arLoadProductArray = Array(
"IBLOCK_SECTION_ID" => false, // элемент лежит в корне раздела
"IBLOCK_ID" => 33,
"NAME" => $_POST['phone'],
"ACTIVE" => "Y", // активен
"PREVIEW_TEXT" => $_POST['message'],
);
if($PRODUCT_ID = $el->Add($arLoadProductArray))
echo "New ID: ".$PRODUCT_ID;
else
echo "Error: ".$el->LAST_ERROR;
}else{?>
<h2 class="title" width="450px">Заказать звонок</h2><span class="close-dialog" title="Закрыть">X</span>
<form action='' method='' id="call-form" >
<table width="450px">
<tr >
<td class="label" >
Введите ваш номер телефона:
</td>
<td>
<span style='float:left;margin-top:3px'>+7</span>
<input type='text' name='phone' value='' id='phone' class="input" size=10 style="height: 20px;width:228px;"/>
</td>
</tr>
<tr>
<td class="label" valign="top">
Коментарий:
</td>
<td>
<textarea name='message' id='message' class="input" style="width:242px; height:130px; resize: none"></textarea>
</td>
</tr>
<tr>
<td>
</td>
<td align="right">
<div id='submit-call' class='button'>отправить</div>
</td>
</tr>
</table>
</form>
<script>
$(function(){
$('#submit-call').click(function(){
var ph = $('#phone').val();
var mes = $('#message').val();
$.post('/ajax/callback.php',{phone:ph,message : mes},function(data){
$('#phone').val('');
$('#message').val('');
$("#callback").animate({width:'toggle'},1000);
$(".popup-bg").hide();
});
});
});
</script>
<?}?>
<?
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/header.php");
$APPLICATION->SetTitle("AJAX");
CJSCore::Init(array('ajax'));
$sidAjax = 'testAjax';
if(isset($_REQUEST['ajax_form']) && $_REQUEST['ajax_form'] == $sidAjax){
$GLOBALS['APPLICATION']->RestartBuffer();//сбрасываем буфер контента функцией $APPLICATION->RestartBuffer().
//А в конце просто выходим. Тем самым мы отдаем только нужный кусок контента при аякс запросе.
echo CUtil::PhpToJSObject(array(//PhpToJSObject Преобразует массив PHP в js
'RESULT' => 'HELLO',
'ERROR' => ''
));
die();
}
?>
<div class="group">
<div id="block"></div >
<div id="process">wait ... </div >
</div>
<script>
window.BXDEBUG = true;
// window - Административная оконная библиотека
//Расширение window (core_window.js). Данный вид окон используется в для работы административных интерфейсов.
// Для публичных интерфейсов следует использовать расширение popup.
function DEMOLoad(){
//BX Функция для сокращения примитивных действий. Действие зависит от типа параметра param:
//Строка: функция вернет ссылку на узел DOM-структуры с идентификатором param. (Действие будет аналогично document.getElementById, но экономит ресурсы.)
//Ссылка на узел DOM-структуры: функция вернет ссылку без изменений.
//Функция: функция будет установлена в качестве обработчика псевдо-события BX.ready.
BX.hide(BX("block"));
BX.show(BX("process"));
BX.ajax.loadJSON(
'<?=$APPLICATION->GetCurPage()?>?ajax_form=<?=$sidAjax?>',
DEMOResponse
);
}
//BX.ajax.loadJSON Функция загружает json-объект из заданного url и передает его обработчику callback.
//GetCurPage Возвращает путь к текущей странице относительно корня. Нестатический метод.
//BX.ajax.loadJSON - Функция загружает json-объект из заданного url и передает его обработчику callback.
//.hide() скрыть С помощью этой функции можно плавно показывать и скрывать выбранные элементы на странице, за счет изменения размера и прозрачности.
//.show() - показать Возвращает: jQuery Описание: С помощью этой функции можно плавно показывать и скрывать выбранные элементы на странице, за счет изменения размера и прозрачности.
function DEMOResponse (data){
BX.debug('AJAX-DEMOResponse ', data);
BX("block").innerHTML = data.RESULT;
BX.show(BX("block"));
BX.hide(BX("process"));
BX.onCustomEvent(
BX(BX("block")),
'DEMOUpdate'
);
}
//BX.onCustomEvent Функция позволяет два варианта входных параметров.
//Функция вызвает все обработчики события eventName для объекта eventObject, а также, все глобальные обработчики
// (назначенные без указания объекта). Если не указан объект, в котором возникает событие, то будут вызваны только
// глобальные обработчики. Обработчик будет выполнен в контексте объекта, в котором возникло событие.
// Значения из массива arEventParams будут переданы в качестве входных параметров обработчика..
BX.ready(function(){
/*
BX.addCustomEvent(BX("block"), 'DEMOUpdate', function(){
window.location.href = window.location.href;
});
*/
BX.hide(BX("block"));
BX.hide(BX("process"));
BX.bindDelegate(
document.body, 'click', {className: 'css_ajax' },
function(e){
if(!e)
e = window.event;
DEMOLoad();
return BX.PreventDefault(e);
}
);
//BX.bindDelegate Функция устанавливает обработчик handler события eventName на дочерние элементы узла node,
// удовлетворяющих условиям isTarget. Нюансом метода является независимость от изменений содержимого node: физически обработчик
//вешается на сам узел node и принимает событие в момент его всплывания от дочерних элементов.
//event.preventDefault()Возвращает: undefined
//Описание: Отменяет выполнение события. Например, при "клике" по ссылке, переход по ней не произойдет, если внутри
//обработчика будет вызван этот метод.
});
</script>
<div class="css_ajax">click Me</div>
<?require($_SERVER["DOCUMENT_ROOT"]."/bitrix/footer.php");?>
на шаред хостинге
зачем XML