jQueryで画面をリロードせずにデータベース等のデータを取得してページに出力したい場合があります。
Ajaxを使用すればリロードせずにphpファイルを呼び出すことが可能です。
クリックしたり、スクロールしたりするとデータを追加していくようなページなど、
色々な場面で使用できそうです。
下記にjQueryのAjaxを使用してphpファイルを呼び出してPOST送信を行い、
データベースからデータを取得した時の方法をメモします。
■ Ajaxを使用してPOST送信
※知り合いから指摘を受けました。
POSTデータのチェックやSQLインジェクション対策は必ずしてください。
htmlファイルとphpファイルを用意します。
【JS】
※index.html
下記は「#btn」をクリックした時にAjaxを使用してます。
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script> <script type="text/javascript"> $(function() { $("#btn").click(function(){ $.ajax({ type: "POST", url: "ajax.php", data: { "page": 2 }, success: function(j_data){ // 処理を記述 } }); }); }); </script>
「type」に”POST”を指定します。(POST送信を行う場合)
「url」にPOST送信を行うファイル名を指定します。
「data」にPOST送信するデータを設定します。
POST送信が成功した時に「success」で指定した引数にphpから渡されたデータが格納されます。
「success」内に必要な処理を記述します。
【PHP】
※ajax.php
データベースからデータを取得し、取得したデータを返します。
<?php $data = array(); $page = $_POST['page']; $conn = mysql_connect('localhost', 'username', 'password'); $db = mysql_select_db('hoge', $conn); $sql = " SELECT * FROM test WHERE page = " . $page; $res = mysql_query($sql, $conn); while ($row = mysql_fetch_array($res)) { $data[] = $row; } mysql_close($conn); header('Content-Type: application/json; charset=utf-8'); echo json_encode($data); ?>
「$_POST」にajaxで設定したデータが格納されています。
json_encode()を使用して取得したデータをJSON形式で返します。