jQueryの$.ajaxでデータをphp側に渡し、phpの方で処理をしたあと再度jQueryで受け取る処理についてです。
例として、ボタンをクリックするとインプット欄の日付を取得してphpに渡し、phpは渡された日付のデータをjQuery側に返すというプログラムです。
jQuery
<input type='date' name='date'> <button>ボタン</button> <script> jQuery(function($){ $('button').click(function(){ var day = $('input[name=date]').val();//インプット欄の日付を取得 $.ajax({ type: 'POST', dataType:'json', url:'api.php', data:{ item:day }, success:function(data) { alert(data); }, error:function(XMLHttpRequest, textStatus, errorThrown) { } }); }); </script>
PHP <?php $day = $_POST['item'];//ポストで受け取れる //略 $html = "戻り値"; header('Content-type: application/json');//指定されたデータタイプに応じたヘッダーを出力する echo json_encode( $html );
ajax通信を行うjQueryのメソッドは他に$.load、$.get、$.post、$.getJSON、$.getScriptが存在し、目的によってはこれらを使った方がシンプルになる。最も多機能で多くのことができるのは$.ajaxのようです。$.loadや$.getなどで出来ることで$.ajaxにできないことはなく、$.ajaxで可能なことの多くを$.loadや$.getではできません。
$.ajaxでのPHPへのデータの渡し方ですが、data:{day:day}
の部分で指定しています。オブジェクトでデータを渡すと、プロパティがPHPが受け取る配列のキーとなるわけです。data:{foo:'引数'}
なら、PHP側は$_POST[‘foo’]で’引数’を受け取ることになります。
dataTypeはこ他にもxml、html、script、jsonp、textが利用でき。PHP側で出力させたい内容に応じて変えます。
dataTypeにjsonを指定した場合、PHPで出力する際はheader('Content-type: application/json');
を書いてからjson_encode()
を通したものをprintトします。ここでprintしたものが$.ajaxのsuccess:function(data){}
に渡されます。
受け取ったデータの処理はsuccess:function(data){}
内に書き、ajax通信に失敗した際の処理はerror:function(XMLHttpRequest, status, errorThrown){}
に書きます。