Уважаемы коллеги подскажите. Написана страничка на которой присутствует 2 select. первый select заполняется прямо разделами инфоблока. а второй select на основе выбранного раздела. Всё работает, но только если авторизован в системе. Пробовал выставлять права на страницы не помогло. Скрипты вообще не выполняются, если не авторизоваться. Вот код страниц. Может кому пригодиться.
vybor.php
car.php
vybor.php
Код |
---|
<? require($_SERVER["DOCUMENT_ROOT"]."/bitrix/header.php"); $APPLICATION->SetTitle(""); ?> <? include_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/iblock/include.php"); include_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/php_interface/include/public_tools.php"); ?> <style type="text/css"> .border { float: left; margin: 10px 0 0 5px; } label { padding-left: 5px; } select { width: 130px; font-family: Georgia, Times, "Times New Roman", serif; font-size: 9pt; color: #000; } </style> <? $APPLICATION->AddHeadScript('../js/jquery-1.3.1.js')?> <script type="text/javascript"> (function($){ // очищаем select $.fn.clearSelect = function() { return this.each(function(){ if(this.tagName=='SELECT') { this.options.length = 0; $(this).attr('disabled','disabled'); } }); } // заполняем select $.fn.fillSelect = function(dataArray) { return this.clearSelect().each(function(){ if(this.tagName=='SELECT') { var currentSelect = this; $.each(dataArray,function(index,data){ var option = new Option(data.text,data.value); if($.support.cssFloat) { currentSelect.add(option,null); } else { currentSelect.add(option); } }); } }); } })(jQuery); </script> <script type="text/javascript"> $(document).ready(function(){ // выбор модели function adjustModel(){ var autoValue = $('#auto').val(); /* alert('Выбор модели' + autoValue); */ var tmpSelect = $('#model'); if(autoValue.length == 0) { tmpSelect.attr('disabled','disabled'); tmpSelect.clearSelect(); } else { $.getJSON('car.php',{auto:autoValue},function(data) { tmpSelect.fillSelect(data).attr('disabled',''); alert('ajax!'); }); } }; $('#auto').change(adjustModel); $('#model').change(function(){ if($(this).val().length != 0) { alert('Выбор сделан!'); } }); }); </script> <? $rsElements1 = GetIBlockSectionList(14, 0, Array("sort"=>"asc"), 100); ?> <div class="border"> <label>Марка</label><br /> <select id="auto" name="auto" > <option value="">Выбрать марку</option> <? foreach ($rsElements1->arResult as $element) {?> <option value="<?= $element["ID"] ?>"><?= $element["NAME"] ?></option> <?}?> </select> </div> <div class="border"> <label>Модель</label><br /> <select id="model" name="model" disabled="disabled"></select> </select> </div> <? require($_SERVER["DOCUMENT_ROOT"]."/bitrix/footer.php");?> |
car.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(); */ /* $_GET["autoValue"] */ $result[] = array ("value"=>"", "text"=>"Выбрать автомобиль"); $arSelect = Array(); $arFilter = Array("IBLOCK_ID" => "14", "SECTION_ID"=>$_GET["auto"], "ACTIVE_DATE"=>"Y", "ACTIVE"=>"Y"); $res = CIBlockElement::GetList( Array("sort"=>"asc"), $arFilter, false, false, $arSelect ); while($ob = $res->GetNextElement()){ $arFields = $ob->GetFields(); $result[] = array ("value"=>$arFields["ID"], "text"=>$arFields["NAME"]); } print html_entity_decode(json_encode($result), ENT_QUOTES, 'UTF-8'); /* print json_encode($result); */ /* echo $result; */ die(); ?> |