Проблема по сути осталась та-самая
при изменении значения одного списка, должны обновится два списка
если надо обновить один список я делаю это так:
_form:
Код: Выделить всё
echo $form->dropDownList($model,'fk_obl', Oblast::model()->getGenderOptions(),array(
'empty'=>'Виберіть місто',
'ajax' => array(
'type'=>'POST',
'url'=>CController::createUrl('houseProd/getTown'),
'update'=>'#HouseProd_fk_town',
)));
Код: Выделить всё
public function actionGetTown()
{
$data= Town::model()->findAll('fk_obl=:fk_obl',
array(':fk_obl'=>(int) $_POST['HouseProd']['fk_obl']));
$data=CHtml::listData($data,'id','town');
echo CHtml::tag('option',
array('value'=>''),CHtml::encode('Виберіть місто'),true);
foreach($data as $value=>$name)
{
echo CHtml::tag('option',
array('value'=>$value),CHtml::encode($name),true);
}
}
но я не смог разобраться разобраться с кое какими нюансамиesche писал(а):Можно, конечно. Как именно - зависит от того, нужны ли улицы внутри района или внутри города.
Если внутри города - то обновление аналогичное (самый простой вариант в реализации - делать ещё один ajax-запрос на сервер и обновлять второй список)
Если внутри района - всё тоже самое.. только передавать значение второго списка, а обновлять третий.
По-хорошему, всё это можно сложить в один запрос, возвращать, например в JSON, а данные списков разбирать уже на клиенте.
как сделать ещё один ajax-запрос на сервер и обновлять второй список
с этим у меня немого больше затрудненийesche писал(а):можно сложить в один запрос, возвращать, например в JSON, а данные списков разбирать уже на клиенте
мне друг посоветовал вернуть все нужные мне даные в виде JSON и написал код для клиентской части:
Код: Выделить всё
$("CityDropDownSelector").change(function () {
$.ajax({
type: "POST",
url: "functionOnServerSide", //functionOnServerSide - назва процедури на сервері, яка має виконуватись і повертати результат
data: { value: "CityDropDownSelectedValue" },//дані які ти передаєш, в форматі JSON і приймаєш ти тоже в цему форматі
dataType: "json",
success: function (data) {//data - дані які вертаються з серверу(клас з двома полями, вулиці і райони)
//чистимо дропдауни
$("BlockDropDownSelector").empty();
$("StreetDropDownSelector").empty();
//заповнюємо дропдауни
for (var block in data.blocks)
$("BlockDropDownSelector").append("<option value='" + block.key + "'>" + block.Name + "</option>");
for (var street in data.streets)
$("StreetDropDownSelector").append("<option value='" + street.key + "'>" + street.Name + "</option>");
},
error: function () {
alert("error");
}
});
});
вообще то вижу что код очень похож на код встроенного аякса и думаю может кто то может помочь переделать его или дать какой то совет по интересней
заранее благодарен