我想根据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;})
似乎没问题,但它无效。
答案 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调用