Php 从CHtml::dropDownList获取所选值
我有一个关于Yii框架的问题 假设我有下面列出的代码这样的下拉列表 我需要打印所选的值,并尝试使用$\u POST['countries'] 但什么也没发生 我只需要将所选的值存储在变量中,以便对其进行操作Php 从CHtml::dropDownList获取所选值,php,yii,Php,Yii,我有一个关于Yii框架的问题 假设我有下面列出的代码这样的下拉列表 我需要打印所选的值,并尝试使用$\u POST['countries'] 但什么也没发生 我只需要将所选的值存储在变量中,以便对其进行操作 <?php echo CHtml::dropDownList('countries', $select = array(), CHtml::listData($countries, 'code', 'name')); ?> $_POST变量对应于使用H
<?php
echo CHtml::dropDownList('countries', $select = array(),
CHtml::listData($countries, 'code', 'name'));
?>
$_POST变量对应于使用HTTP协议发送的一些数据,因此要使用此变量,客户端浏览器需要将数据发送到服务器
由于您希望在用户在下拉列表中选择一个值之后显示一些内容,因此需要使用在客户端执行的javascript
下面是一个使用jquery获取所选值的示例。然后,您应该在希望值出现的地方更新div,但由于它不在您的问题中,我无法帮助您
$('#dropDownId').change(function(){
var value = $('#dropDownId :selected').text();
//Here update the div where you need to see the selected value
});
其中,dropDownId是您需要在中提供给dropDownList的id,$\u POST变量对应于使用HTTP协议发送的一些数据,因此要使用此变量,客户端浏览器需要向服务器发送数据
由于您希望在用户在下拉列表中选择一个值之后显示一些内容,因此需要使用在客户端执行的javascript
下面是一个使用jquery获取所选值的示例。然后,您应该在希望值出现的地方更新div,但由于它不在您的问题中,我无法帮助您
$('#dropDownId').change(function(){
var value = $('#dropDownId :selected').text();
//Here update the div where you need to see the selected value
});
其中dropDownId是您需要在中提供给dropDownList的id,您也可以使用Ajax请求。如果你想制作一些相关的下拉列表,那就更好了。 例如:
echo $form->dropDownList($profile, $field->varname,CHtml::listData(Countries::model()->findAll(),'short','title'), array(
'class'=>"chzn-select",
'empty'=>"Select country",
'ajax' => array(
'type' => 'POST',
'url'=>$this->createUrl('registration/state'),
'update' => '#Profile_state',
'data'=>array('country'=>'js:this.value',),
'success'=> 'function(data) {
$("#Profile_state").empty();
$("#Profile_state").append(data);
$("#Profile_state").trigger("liszt:updated");
} ',
)));
然后在控制器中,您可以使用POST
例如:
public function actionState()
{
$data=Regions::model()->findAll('country_code=:country_code',
array(':country_code'=> $_POST['country']));
echo "<option value=''>Select state</option>";
$data=CHtml::listData($data,'region_code','region_title');
foreach($data as $value=>$state) {
echo CHtml::tag
('option', array('value'=>$value),CHtml::encode($state),true);
}
}
您还可以使用Ajax请求。如果你想制作一些相关的下拉列表,那就更好了。 例如:
echo $form->dropDownList($profile, $field->varname,CHtml::listData(Countries::model()->findAll(),'short','title'), array(
'class'=>"chzn-select",
'empty'=>"Select country",
'ajax' => array(
'type' => 'POST',
'url'=>$this->createUrl('registration/state'),
'update' => '#Profile_state',
'data'=>array('country'=>'js:this.value',),
'success'=> 'function(data) {
$("#Profile_state").empty();
$("#Profile_state").append(data);
$("#Profile_state").trigger("liszt:updated");
} ',
)));
然后在控制器中,您可以使用POST
例如:
public function actionState()
{
$data=Regions::model()->findAll('country_code=:country_code',
array(':country_code'=> $_POST['country']));
echo "<option value=''>Select state</option>";
$data=CHtml::listData($data,'region_code','region_title');
foreach($data as $value=>$state) {
echo CHtml::tag
('option', array('value'=>$value),CHtml::encode($state),true);
}
}
是否要在按下提交按钮后或在用户选择后打印所选值?因为在一种情况下,您可以使用php,而在另一种情况下使用javascript!就在用户选择后。是要在按“提交”按钮后还是在用户选择后打印所选值?因为在一种情况下,您可以使用php,而在另一种情况下使用javascript!就在用户选择它之后。您可以使用.on'change'。。;像well@darkheir,非常感谢您的回答,您可以使用已接受的答案。关于“更改”,请参阅。。;像well@darkheir,非常感谢您的回答,已接受的回答