cakePHP+JQueryでajaxを使ってFormの内容をPOSTしてみた。

May 29, 2011,
tags: ajax form jquery php


このエントリーをはてなブックマークに追加

最新情報!!!!
新しく修正した記事書きました!!!
cakePHP+JQueryでajaxを使ってFormの内容をPOSTしてみた。その3(修正版)

cakePHP使っているんでAjaxだろうがpostしたときは$this->dataで受け取りたいなーとか思ってました。
data[Post][title]とかいうformの名前にしておけばいいといえばいいけど、Securityコンポーネントつかっているとだめだよねって話になりますよね。

んで、いちいち全部のinputタグのIDからデータとってくるのとかめんどいなーと悩んだ訳ですが・・・
よく考えたら、formのデータを全部もってくればいいってことに気づきました。

ってことでこんな感じに書いてみました。


<?php $this->Html->scriptStart(array('inline' => false))?>
$(function(){
	$('form').submit(function(){
		var postData = {};
		$('form').find(':input').each(function(){
			postData[$(this).attr('name')] = $(this).val();
		});
		$.post('/posts/add',postData,taskRender);

		return false;
	});
});
<?php $this->Html->scriptEnd()?>
<fieldset>
<legend><?php __('Add'); ?></legend>
<?php echo $this->Form->create('Post');?>
<?php echo $this->Form->input('title');?>
<?php echo $this->Form->input('name');?>
<?php echo $this->Form->input('description');?>
<?php echo $this->Form->end('登録');?>
</fieldset>

こうしておけば、Formの内容全部がAjax使ってPOSTされますね。

※追記2011/11/17
上記のJavaScriptだとselectやradio等の値を正しく取得できないのでコチラの記事を参考にしてください。

comments powered by Disqus