我使用了一个小部件JMultiSelect,我希望当我按下ajax按钮(ajax请求)时,我选择的值将被发送到控制器。我希望这个值会添加到我的请求的“数据”中。
这是我的小部件:
$this->beginWidget('CActiveForm', array(
'id' => 'Music'
));
$this->widget('ext.multiselect.JMultiSelect', array (
'id'=>'MusicName',
'name'=>'Music',
'data' => $music,
'options'=> array('header'=>'Select a music file', 'noneSelectedText'=>'Select a music file', 'multiple'=>false),
));
$this->endWidget();
我试过这样的事情:
echo CHtml::ajaxLink(
'Test request',
array('video/createVideo'),
array(
'update'=>'#req_res',
'data'=> array(
'musicFile'=>'js:function(){
return document.getElementById("Music").value;
}',
),
'type' => 'post',
)
);
找到了一个解决方案,但现在我有了价值而不是文字:
'musicFile'=>'js:function(){
return $("#MusicName").multiselect("getChecked").map(function(){
return this.value;
}).get();
}',
答案 0 :(得分:0)
尝试做这样的事情直接在ajax的数据部分使用Js函数
$this->widget('ext.multiselect.JMultiSelect', array (
'name'=>'Music',
'data' =>array(
"urVariableName" = "js: $('#music').val();"
),
'options'=> array('header'=>'Select a music file', 'noneSelectedText'=>'Select a music file', 'multiple'=>false),
));
要在控制器上获取数据,请使用POST或GET,如图所示
$variable=$_POST['urVariableName'];
尝试使用Ajax按钮,如图所示
echo CHtml::ajaxButton(
'Test request',
array('video/createVideo'),
array(
'update'=>'#req_res',
'data'=> array(
'musicFile'=>"js: $('#music').val();"
}',
),
'type' => 'post',
)
);
答案 1 :(得分:0)
尝试在JMultiSelect中使用'select'属性,如图所示
$this->widget('ext.multiselect.JMultiSelect', array (
'name'=>'Music',
'data' => $music,
'select'=>'js:function( event, ui ) {
// $("#my_keyword_id").val(ui.item.id);
alert($("#music").val());
}',
'options'=> array('header'=>'Select a music file', 'noneSelectedText'=>'Select a music file', 'multiple'=>false),
));