我有一个activeCheckBox上的表单,我想更新数据库,只要复选框的值被改变。我正在阅读关于activeecheckbox的CHTML类的文档,但我真的不明白从哪里开始。任何人都可以提供一个例子,如何设置activeecheckbox与ajax更新或任何链接的例子?
编辑
也许应该提一下,我刚刚开始使用Yii,对PHP和javascript几乎没有经验。
也许是这样的?
控制器中的AJAX动作:
public function actionCheckboxUpdate() {
if(Yii::app()->request->isPostRequest)
{
if(isset($_POST['my_checkbox']))
{
// save value to DB
}
}
else
throw new CHttpException(400,
Yii::t('app', 'Invalid request. Please do not repeat this request again.'));
}
Yii复选框:
<?php echo CHtml::checkbox('my_checkbox', false, array(
'submit'=>'mycontroller/checkboxUpdate',
'params'=> array('my_checkbox'=>'1')
)); ?>
根据你想要传递的参数,你可能需要变得更花哨,比如添加你自己的jQuery事件监听器,它将复选框的实际值发送给你的ajax动作,但我希望这能让你开始。
有关更多信息,请参阅文档中的html::checkBox(以及Yii用来简化AJAX的html::clientChange参数)。
下面是一些值得一读的文章:
- http://www.yiiframework.com/forum/index.php?/topic/3337-activecheckbox-with-ajax/
- http://www.yiiframework.com/forum/index.php?/topic/3110-ajax-and-sidebar
- 使用ajax post复选框值
祝你好运!
像往常一样创建复选框:
<?php
echo CHtml::checkbox('my-checkbox', false, array('id'=>'my-checkbox-id'));
然后创建一个jQuery事件监听器
<?php
Yii::app()->clientScript->registerScript('my-event-listener',"
$('#my-checkbox-id').change(function(){
$.post(
'controller/action', //url
{ //data
myval: $(this).is(':checked')
},
function(data){
alert(data); //callback
});
});
");