Я пытаюсь заполнить раскрывающееся меню на основе выбора первого меню. используя код ниже него будет просто сделать следующий выпадающий быть пустымКак установить значение опции выбора
$(\".category_id\").change(function(){
$(\"#account_id > option\").remove();
$(\"#item_name_id > option\").remove();
var category_id={'category_id':$(this).val()};
$.ajax({
type: \"POST\",
url: 'getCategory1/',
dataType: \"json\",
data: category_id,
success: function(category_ids){
// category_ids = {"0":"Choose Account Name","2":"OfficeEquipment","3":"IT Equipment"}
$.each(category_ids,function(account_id,name){
var opt = $('<option />');
opt.val(account_id);
opt.text(name);
$(this).closest('td').next().find('select').append(opt);
});
}
});
});
Функция контроллера я использовал:
public function actionGetCategory1(){
//Get all the sub categories a the main category
$cat_id = $_POST['category_id'];
$subCategory = Item::model()->getCategory1($cat_id);
echo(json_encode($subCategory));
}
Функция Модель
public function getCategory1($cat_id){
$where = "WHERE category_id = $cat_id";
$select = "SELECT * FROM tbl_account $where";
$query = Yii::app()->db->createCommand($select)->queryAll();
$subCat = array();
$subCat[0] = "Choose Account Name";
if($query){
foreach($query as $row){
$subCat[$row['account_id']] = $row['account_name'];
}
return $subCat;
}
else{ return FALSE; }
}
Данные, которые должны быть петля в $ .each будет выходить из контроллера в формате json. Я использовал var_dump для отображения i.
string(189) "{"0":"Choose Account Name","2":"Information and Communication Technology Equipment","3":"Office Equipment","4":"Furniture and Fixtures","5":"Communication Equipment","6":"Other Equipments"}"
Ваш селектор возвращает что-нибудь? Можете ли вы включить свой html? Может быть, даже jsfiddle. Я думаю, что ваш селектор неверен. $ (this) внутри $ .each не будет тем, что вы хотите. – dman2306
Да, если бы я использовал $ (this) внутри $ .each, это приведет к неопределенному, но если бы я использовал его за пределами $ .each, это даст результат не неопределенный. –
где находится вызов ajax ... он внутри обработчика события –