Как-то не заладилось с утра:
1) Содержимое включаемой области:
[code]
<?
include_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/iblock/include.php");
include_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/php_interface/include/public_tools.php");
?>
<script type="text/javascript">
var xmlHttp = false;
/*@cc_on @*/
/*@if (@_jscript_version >= 5)
try {
xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e2) {
xmlHttp = false;
}
}
@end @*/
if (!xmlHttp && typeof XMLHttpRequest != 'undefined') {
xmlHttp = new XMLHttpRequest();
}
function updateservices(){
if (xmlHttp.readyState == 4){
services = document.getElementById("services");
services.innerHTML = xmlHttp.responseText;
}
}
function setservice(){
var type = document.getElementById("servicetype").value;
if ((type == null) || (type == "")) return;
var url = "ajax.php?SECTION_ID=" + escape(type);
xmlHttp.open("GET", url, false);
xmlHttp.onreadystatechange = updateservices;
xmlHttp.send(null);
}
</script>
<form action="">
<select name="servicetype" onchange="setservice();" id="servicetype">
<?
$rsIblock = GetIBlockList("Services", Array("servicetype"));
$arIblock = $rsIblock->Fetch();
$rsSection = GetIBlockSectionList($arIblock["ID"], false, Array("SORT"=>"DESC", "NAME"=>"DESC"));
while ($arSection = $rsSection->Fetch())
{
echo "<option value=\"".$arSection["ID"]."\">".$arSection["NAME"]."</option>\n";
}
$rsIblock = GetIBlockList("Services", Array("addservices"));
$arIblock = $rsIblock->Fetch();
$rsSection = GetIBlockSectionList($arIblock["ID"], false, Array("SORT"=>"DESC", "NAME"=>"DESC"));
while ($arSection = $rsSection->Fetch())
{
echo "<option value=\"".$arSection["ID"]."\" >".$arSection["NAME"]."</option>\n";
}
?>
</select>
<select name="servicetype" id="services">
</select>
</form>
[/code]
нужно, чтоб по выбору значения в первом селекте, подгружались варианты во второй (двольно стандартная задача)
вот собственно вызываемый скрипт
[code]
ajax.php
<?
require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_before.php"); // первый общий пролог
require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/iblock/include.php"); // инициализация модуля
require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/iblock/prolog.php"); // пролог модуля
$APPLICATION->RestartBuffer();
$html ="";
$arSelect = Array();
$arFilter = Array("SECTION_ID"=>$_GET["SECTION_ID"]);
$res = CIBlockElement::GetList( Array("sort"=>"asc"), $arFilter, false, false, $arSelect );
while($ob = $res->GetNextElement()){
$arFields = $ob->GetFields();
$html.= "<option value=\"".$arFields["ID"]."\">".$arFields["NAME"]."</option>";
}
echo $html;
die();
?>
[/code]
в соответствии с рекомендацией: http://dev.1c-bitrix.ru/community/blogs/cookbook/197.php вызывается $APPLICATION->RestartBuffer(); , но скрипт в БУСе ведет себя все равно, как хочет
Т.е. если в мозилле обратиться, как http://localhost:6448/ajax.php?SECTION_ID=14 , он выводит какие-то <html><body>... - откуда? О_о, причем собственно option-ы не выводятся!
Дальше - больше, если в функции updateservices() делать alert(xmlHttp.responseText) - в мозилле ничего не алертуется, а в опере все равно выводится HTML с доктайпом, хэдером, etc... - откуда? я же вызвал $APPLICATION->RestartBuffer()?
2) Начал грешить на лису и решил попробовать в Опере - напрямую к http://localhost:6448/ajax.php?SECTION_ID=14 БУС не пустил (хотя и стоял доступ "чтение" для всех), решил авторизоваться - ПАРОЛЬ НЕПРАВИЛЬНЫЙ!!! В состоянии легкого шока решил перепроверить в фоксе: вышел, попробовал зайти и сохраненный до этого пароль оказался неправильным! теперь я вообще в админку не могу зайти, т.к. не знаю, какой ему пароль нужен (неделю работал, нормально все было). Сайт на локалхосте, поэтому ни о тех. поддержке, ни о сбросе пароля по e-mail речи не идет, что делать-то????
ЗЫ: хотел смайлик и оформление кода вставить в это сообщение - дак и то не работает!!!!!!!!!!! *dash*