目的:各行に人がいるテーブルと、チェックボックスをクリックするとフォームが送信されます。今のところ、チェックボックスごとに1つのフォームがあります。
( http://iufm-web.ujf-grenoble.fr/crip/images/extrait_tableau_dossiers.png )
私はcakephp 2.0でそれを管理しましたが、送信するたびにページ全体がリロードされます(何行?おそらく数百、最大は別の質問です)
私はそれを非常に反応的にしたいので、クリックされた行だけをリロードするために ajax を使用することを考えました。
Js->submit を使用しようとしましたが、チェックボックスと互換性がありません。
コントローラーのアクションによってページがリロードまたはリダイレクトされるため、各フォームのアクションに何を使用すればよいのでしょうか。
編集:私はデイブの提案に従い、フラグメントビュー(テーブルの行を埋める)で:
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 ではうまく機能します。これで、データが実際に保存されたことをユーザーに知らせる視覚効果が得られますが、おそらく別の質問をする必要があります。