1

目标:一个表格,每行一个人,和复选框,单击复选框提交表单,现在每个复选框一个表单。

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

我已经用 cakephp 2.0 解决了这个问题,但是每次提交都会重新加载整个页面(多少行?也许几百行,最大值是另一个问题)

我希望它具有很强的反应性,所以我想使用 ajax 仅重新加载单击的行。

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

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

编辑:我遵循了 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。现在,我会有一个视觉效果,让用户知道数据实际上是保存的,但也许我应该问另一个问题。

4

1 回答 1

1

使用javascriptsonchange()事件并让它调用一个执行所有 ajax 的函数。

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

于 2013-03-28T21:04:40.527 回答