目标:一张桌子,每行一个人,以及复选框,点击一个复选框 提交表格,现在每个复选框都有一个表格。
(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。现在,我会有一个视觉效果,让用户知道实际保存了数据,但也许我应该问另一个问题。
答案 0 :(得分:1)
使用javascripts onchange()
event并让它调用一个能完成所有ajax的函数。
您还可以执行一些逻辑来确定在执行ajax之前是否选中了所述已更改的复选框等等。