Добро пожаловать на сайт <БагБД>, где вы можете задавать вопросы о программировании и разработке на Битрикс и Битрикс24, и получать быстрые и квалифицированные ответы от профессионалов!

Отправка AJAX-запросов методом POST

00 голосов
3
Создал обработчик формирования второго SELECT'а в зависимости от значения первого без перезагрузки страницы, но проблема в том, что POST-запрос с помощью JQUERY почему-то  не отправляется.
Вот код  SELECT'а :
Код
Год: 
<select name="yearfilterselect" onchange="javascript:selectweekfilter();">
  <option value="">Все года</option>
  <optgroup label="Выберите год">
  <? 
    $arrayyear = getdate();
    $year = $arrayyear['year'];
    for ($listyear=2011; $listyear==$year; $listyear++){echo "<option value='$listyear'>$listyear</option>";}
  ?>
</optgroup>
</select>

<div name="selectweek"></div>
Вот javascript:
Код
function selectweekfilter(){
        var id_year = $('select[name="yearfilterselect"]').val();
        if(!id_year){
                $('div[name="selectweek"]').html();
        }else{
                $.ajax({
                        type: "POST",
                        url: "/includes/weekfilter.php",
                        data: "id_year="+id_year,
                        cache: false,
                        success: function(responce){ $('div[name="selectweek"]').html(responce); }
                });
        };
}; 
А вот сам скрипт получения списка (файл  weekfilter.php): 
Код
<?
if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();
if (isset($_POST[id_year]) && !empty($_POST[id_year]))
{ 
CModule::IncludeModule('iblock');
$arSelect = Array("ID", "NAME");
$arSort = array('NAME'=>'ASC');
$arFilter = array('IBLOCK_ID'=>"16", 'ACTIVE'=>'Y', 'YEAR_PERIOD'=>
$_POST[id_year]);
$res = CIBlockElement::GetList($arSort, $arFilter, false, false, $arSelect);
if (!empty($res)){ ?>
Неделя: 
<select>
  <option value="">Все недели</option>
  <optgroup label="Выберите неделю"> 
<?
while($ar_fields = $res->GetNext())
{
?>
   <option value="<?=$ar_fields['ID'] ?>"><?=$ar_fields['NAME'] ?></option>
<?
}
?> 
  </optgroup>
</select>   
<?
}
}
?>
 
Подскажите в чем проблема? Почему не идет запрос?
P.S. jQuery подключаю: 
Код
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script> 
спросил 10 Май, 14 от W1Ng (540 баллов)

3 Ответы

00 голосов

А вы уверены что при таком условии скрипт доходит до выполнения ajax запроса?
Может лучше так
<code>

...
 if(id_year == ''){
                $('div[name="selectweek"]').html();
 }else{
...

</code>

ответил 04 Июль, 14 от Gendos (670 баллов)
00 голосов
Точно не оправляется? Может на сервере не отрабатывает из-за некорректного индекса массива $_POST -

Цитата
Сергей Остапюк пишет:
$_POST[id_year]
?
ответил 12 Янв, 15 от Pomnep (13,960 баллов)
00 голосов
Подправил код php-скрипта:
Код
<?
if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();
if (isset($_POST[id_year]) && !empty($_POST[id_year]))
{ 
CModule::IncludeModule('iblock');
$arSelect = Array("ID", "NAME");
$arSort = array('NAME'=>'ASC');
$arFilter = array('IBLOCK_ID'=>"16", 'ACTIVE'=>'Y', 'YEAR_PERIOD'=>
$_POST[id_year]);
$res = CIBlockElement::GetList($arSort, $arFilter, false, false, $arSelect);
if (!empty($res)){ ?>
Неделя: 
<select>
  <option value="">Все недели</option>
  <optgroup label="Выберите неделю"> 
<?
while($ar_fields = $res->GetNext())
{
?>
   <option value="<?=$ar_fields['ID'] ?>"><?=$ar_fields['NAME'] ?></option>
<?
}
?> 
  </optgroup>
</select>   
<?
}
else {?><p>Пусто!</p> <? }
}
else {?><p>Проверка!</p> <? }
?>
 
По-идеи должно бы было вернуть хотя бы абзац "Проверка!" или "Пусто!" , но ничего не происходит.
ответил 29 Апр, 15 от W1Ng (540 баллов)

Похожие вопросы

0 голосов
2 ответов
спросил 03 Май, 14 от Aribor (560 баллов)
0 голосов
3 ответов
0 голосов
4 ответов
0 голосов
1 ответ
спросил 27 Авг, 13 от Dimono (120 баллов)
0 голосов
7 ответов
спросил 25 Авг, 13 от Amentet (2,080 баллов)