CakephpでFormの値をjQueryを使って非同期にpostの値を渡してみました
まずViewでformをつくります
echo $this->Form->create('sample');
echo $this->Form->checkbox('test');
echo
// などなど..
echo $this->Form->end();
formのsubmitイベントで、phpへpostします
jQueryのserializeをつかって、formの値をクエリ文字列にします
.serialize() | jQuery API Documentation
$('form').on('submit', function() {
event.preventDefault();
event.stopPropagation();
$.ajax({
type: 'POST',
url: '<?php echo $this->Html->Url(array('action'=>'save'));?>',
data: { data: $(this).serialize() },
}).done(function(data) {
// 後処理
});
});
コントローラーのsaveアクションへアクセス
これで
$this->data
にふつうのformのpostした値が入ってきます
public function save()
{
$this->layout = null;
parse_str($this->data);
$ret = $this->SomeModel->saveAll($data);
// などなど..
}
PHP: parse_str – Manual
で、クエリ文字列を変数に落とし込めばそのまま
$dataにまるごとデータが入ってきます
(jQueryでdata: で渡したので)
だいぶCakeらしくできた気がします