【问题标题】:YII : Ajax database update in ClistViewYII : ClistView 中的 Ajax 数据库更新
【发布时间】:2014-09-05 04:20:10
【问题描述】:

我想根据 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方法发送到控制器,控制器的代码是

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;})

看起来还可以,但它不起作用。

【问题讨论】:

  • 你能在控制台中查看请求是否已经启动?
  • 我在 firebug 控制台中看到了,但没有发送任何内容

标签: javascript php mysql ajax yii


【解决方案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();
}

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-23
      • 1970-01-01
      • 1970-01-01
      • 2012-04-17
      • 2012-08-24
      相关资源
      最近更新 更多