やっと動いた。デバッグをどうするかだな。XAMPでやってるけど色々と分からない。F12キーでどこまでできる、できなければならないのだろうか。
Ajaxでpostだけど、表示だけでなくデータベースレコード削除などもPHPで行ってAjaxでもやりたい。CRUDをすべてAjaxでSPAで行うとなるとフレームワークの方が楽なのか。
楽はまだ後でもいいか。Vue.jsなんかやれば見えてくるかも。

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8" />
<title>jQuery & Ajax通信を使ってPHPからJSON形式のデータを取得して表示するサンプル</title>
<script src="https://code.jquery.com/jquery-1.9.0.min.js"></script>
<script>
$(document).ready(function() {
/**
* Ajax通信メソッド
* @param type : HTTP通信の種類
* @param url : リクエスト送信先のURL
* @param data : サーバに送信する値
*/
$.ajax({
type: "POST",
url: "json.php",
dataType: "json",
}).done(function(data, dataType) {
// successのブロック内は、Ajax通信が成功した場合に呼び出される
// 結果が0件の場合
if(data == null) alert('データが0件でした');
// 返ってきたデータの表示
var $content = $('#content');
for (var i =0; i<data.length; i++) {
$content.append("<tr><td>" + data[i].id + "</td><td>" + data[i].name + "</td><td><a href ='test'>" + data[i].tel + "</a></td></tr>");
}
}).fail(function(XMLHttpRequest, textStatus, errorThrown) {
// 通常はここでtextStatusやerrorThrownの値を見て処理を切り分けるか、単純に通信に失敗した際の処理を記述します。
// this;
// thisは他のコールバック関数同様にAJAX通信時のオプションを示します。
// エラーメッセージの表示
alert('Error : ' + errorThrown);
});
});
</script>
</head>
<body>
<h1>jQuery & Ajax通信 PHP JSON形式データ表示サンプル</h1>
<table border='1' cellpadding ='4' cellspacing ='0' id="content"></table>
</body>
</html>
<?php
// Ajax通信ではなく、直接URLを叩かれた場合はエラーメッセージを表示
if (
!(isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) === 'xmlhttprequest')
&& (!empty($_SERVER['SCRIPT_FILENAME']) && 'json.php' === basename($_SERVER['SCRIPT_FILENAME']))
)
{
die ('このページは直接ロードしないでください。');
}
// 接続文字列 (PHP5.3.6から文字コードが指定できるようになりました)
$dsn = 'mysql:dbname=sample;host=localhost;charset=utf8';
// ユーザ名
$user = 'root';
// パスワード
$password = '';
try
{
// nullで初期化
$users = null;
// DBに接続
$dbh = new PDO($dsn, $user, $password);
// 'users' テーブルのデータを取得する
$sql = 'select * from sample.users';
$stmt = $dbh->query($sql);
// 取得したデータを配列に格納
while ($row = $stmt->fetchObject())
{
$users[] = array(
'id'=> $row->id
,'name' => $row->name
,'tel' => $row->tel
);
}
// JSON形式で出力する
header('Content-Type: application/json');
echo json_encode( $users );
exit;
}
catch (PDOException $e)
{
// 例外処理
die('Error:' . $e->getMessage());
}
No tags for this post.

