YII:ClistView中的Ajax数据库更新

时间:2014-07-15 05:15:23

标签: javascript php mysql ajax yii

我想根据Yii中的点击更新数据库中的记录。我尝试了各种方法,但按钮没有发布请求。

这是我的ajax按钮代码

CHtml::ajaxButton('Done',Yii::app()->createUrl('task/updateTask'),
                    array(
                        'type'=>'POST',
                        'data'=> array('id'=>$data->task_id),                        
                        'success'=>'js:function(string){ alert(string); }',

                    ),array('class'=>'btn btn-success',)); 

请求通过POST方法发送到Controller,控制器的代码是

public function actionupdateTask(){                    
            $query = "UPDATE task SET task_status=4 WHERE task_id=:t_id";
                $command = Yii::app()->db->createCommand($query);
                $command->bindValue(':t_id', $_POST['id'], PDO::PARAM_INT );
                $command->execute();
                 Yii::app()->end();

        }

但按钮无效或发送数据。如果我检查它显示的页面的来源

jQuery('#yw0').yiiListView({'ajaxUpdate':['yw0'],'ajaxVar':'ajax','pagerClass':'pagination','loadingClass':'list-view-loading','sorterClass':'sorter','enableHistory':false});
jQuery('body').on('click','#yt0',function(){jQuery.ajax({'type':'POST','data':{'id':'5'},'success':function(string){ alert(string); },'url':'/tasks_yii/index.php?r=task/updateTask','cache':false});return false;});
jQuery('body').on('click','#yt1',function(){jQuery.ajax({'type':'POST','data':{'id':'4'},'success':function(string){ alert(string); },'url':'/tasks_yii/index.php?r=task/updateTask','cache':false});return false;});
jQuery('body').on('click','#yt2',function(){jQuery.ajax({'type':'POST','data':{'id':'1'},'success':function(string){ alert(string); },'url':'/tasks_yii/index.php?r=task/updateTask','cache':false});return false;})

似乎没问题,但它无效。

2 个答案:

答案 0 :(得分:1)

您应该将actionupdateTask替换为actionUpdateTask

public function actionUpdateTask(){                    
    $query = "UPDATE task SET task_status=4 WHERE task_id=:t_id";
    $command = Yii::app()->db->createCommand($query);
    $command->bindValue(':t_id', $_POST['id'], PDO::PARAM_INT );
    $command->execute();
    Yii::app()->end();
}

答案 1 :(得分:0)

问题现在已经解决,这是由于脚本标记的非关闭阻塞了其他脚本,而这又阻止了所有的ajax调用