通过单击cakephp 2.0的复选框提交Ajax表单

时间:2013-03-28 15:45:20

标签: jquery ajax cakephp

目标:一张桌子,每行一个人,以及复选框,点击一个复选框 提交表格,现在每个复选框都有一个表格。

http://iufm-web.ujf-grenoble.fr/crip/images/extrait_tableau_dossiers.png

我用cakephp 2.0管理了这个,但每个提交重新加载整个页面(多少行?可能有几百行,最多是另一个问题)

我希望它非常反应,所以我想用ajax只重新加载点击的行。

我尝试过使用Js->提交,但它与复选框不兼容。

我想知道我应该对每个表单的操作使用什么,因为控制器操作会导致页面被重新加载或重定向。

编辑:我已经按照Dave的建议并在片段视图中(填充表格行):

echo $this->Form->input('recu',array('type'=>'checkbox', 
                     'value'=>true, 
                     'id'=>'recu'.$ilignetot, 
                     'hiddenField'=>true, 
                     'div' =>false, 
                     'label' =>false, 
                      'checked'=>$user['User'['recu'], 
                 ))."\n";   

$this->Js->get('#recu'.$ilignetot)->event('change', 
    $this->Js->request(array(
        'controller'=>'users',
        'action'=>'admin_dossier_recu2'
        ), array(
        'update'=>'#'.$lineid,
        'async' => true,
        'method' => 'post',
        'dataExpression'=>true,
        'data'=> $this->Js->serializeForm(array(
            'isForm' => false,
            'inline' => true
            ))
        ))
    );

在控制器操作admin_dossier_recu2中,我保存表单,并返回片段,指定:

      $this->layout = 'ajax';

感谢您的提示,我以前的尝试是错误的。不幸的是,我的解决方案不适用于IE8,但它适用于Firefox和Chrome。现在,我会有一个视觉效果,让用户知道实际保存了数据,但也许我应该问另一个问题。

1 个答案:

答案 0 :(得分:1)

使用javascripts onchange() event并让它调用一个能完成所有ajax的函数。

您还可以执行一些逻辑来确定在执行ajax之前是否选中了所述已更改的复选框等等。