Как-то не заладилось с утра:
1) Содержимое включаемой области:
нужно, чтоб по выбору значения в первом селекте, подгружались варианты во второй (двольно стандартная задача)
вот собственно вызываемый скрипт
в соответствии с рекомендацией: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*
1) Содержимое включаемой области:
Код |
---|
<? 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> |
нужно, чтоб по выбору значения в первом селекте, подгружались варианты во второй (двольно стандартная задача)
вот собственно вызываемый скрипт
Код |
---|
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(); ?> |
в соответствии с рекомендацией:
Т.е. если в мозилле обратиться, как
Дальше - больше, если в функции updateservices() делать alert(xmlHttp.responseText) - в мозилле ничего не алертуется, а в опере все равно выводится HTML с доктайпом, хэдером, etc... - откуда? я же вызвал $APPLICATION->RestartBuffer()?
2) Начал грешить на лису и решил попробовать в Опере - напрямую к
ЗЫ: хотел смайлик и оформление кода вставить в это сообщение - дак и то не работает!!!!!!!!!!! *dash*