jQuery & Ajax通信を使ってPHPからJSON形式のデータを取得して表示するサンプル

未分類

やっと動いた。デバッグをどうするかだな。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.
タイトルとURLをコピーしました