我的更新表单中有两个下拉列表。一个用于地缘政治区,另一个用于州(州下降取决于地缘政治区的下降)。我知道默认情况下,如果更新yii中的记录,则在状态下拉列表中选择状态的存储值。 现在正在使用依赖的下拉列表,在页面加载时,我进行ajax调用以根据地缘政治区域的值更新状态下拉列表中的值。这有效。 现在我想将状态下拉列表的选定值设置为与数据库中的相同。在我的JavaScript中,我尝试将状态下拉列表的值设置为已知值,这是有效的。所以我的问题是如何从数据库中检索状态的值,以便我可以在页面加载时解析它到我的ajax调用?
这是我的代码:
<div class="row">
<?php echo $form->labelEx($model,'gpz_id'); ?>
<?php echo $form->dropDownList($model,'gpz_id', CHtml::listData(GPZ::model()->findAll(), 'gpz_id', 'gpz'),
array(
'prompt'=>'Select Geopolitical Zone',
'ajax'=>array(
'type'=>'POST',
'url'=>CController::createURL('state/sortbygpz'),
'update'=>'#Project_state_id',
'data'=> array('gpz_id'=>'js:this.value'),
'success'=> 'js:function(msg) {
$("#Project_state_id").html(msg);
}'
)
)); ?>
<?php echo $form->error($model,'gpz_id'); ?>
</div>
<div class="row">
<?php echo $form->labelEx($model,'state_id'); ?>
<?php echo $form->dropDownList($model,'state_id', array(), array('prompt'=>'Select Geopolitical Zone First')); ?>
<?php echo $form->error($model,'state_id'); ?>
</div>
这是我的javascript:
$(document).ready(function() {
var gpz = $('#Project_gpz_id').val();
$.ajax({
type: 'POST',
url: '<?php echo CController::createURL('/state/sortbygpz'); ?>',
data: {gpz_id: gpz},
update: $('#Project_state_id'),
success: function(msg) {
$('#Project_state_id').html(msg);
$('#Project_state_id').val("31"); //i set the selected value to a known state id
}
error: function() {
alert(error);
}
});
});