2016年3月1日火曜日

JQueryのDataTablesプラグインを使って、データをテーブル形式で画面に表示してみる【Ajax連携①】

こんにちは、井下です。

いよいよ花粉が飛び交う季節になり、去年買った花粉用の眼鏡を使ってますが、効果あるんですかねコレ…?
結局目が痛いような痒いような感じになってます。


前回はJQueryのDataTablesプラグインについて紹介しました。
今回はAjax連携について、その手順を紹介していきます。

Ajax連携

DataTablesプラグインは元々Ajaxの利用が想定されているので、単純にファイル内のjson形式データを読み込むくらいであれば、簡単に実装できます。

例として、次のようなHTMLファイルを作成後、ブラウザで開いてみてください。
<html>
  <head>
    <link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/s/dt/dt-1.10.10/datatables.min.css"/>
      <script src="http://code.jquery.com/jquery-2.2.0.min.js"></script>
      <script type="text/javascript" src="https://cdn.datatables.net/s/dt/dt-1.10.10/datatables.min.js"></script>
  </head>
  <body>
    <table id="books_table">
      <thead>
        <tr>
          <th>Title</th>
          <th>Author</th>
          <th>Genre</th>
          <th>Page</th>
          <th>Publication</th>
        </tr>
      </thead>
      <tbody>
      </tbody>
    </table>
  </body>
  <script>
    $(document).ready(function() {
      $('#books_table').DataTable({
        "ajax": {
          url: "data.json",
        }
      });
    });
  </script>
</html>


こんな感じの画面が開きました。


テーブルのデータ部分が"Loading..."となっているはずです。

上記のHTMLでは、DataTablesプラグインがAjax連携で利用している設定を黄色字にしています。
そのなかで「url: "data.json"」と書かれていますが、これは「"data.json"内のデータをAjax通信により取得して表示する」ことを示します。
まだ"data.json"を作成していないので、当然読み込みには失敗します。

では、HTMLファイルと同じディレクトリに"data.json"ファイルを作成してみます。
{
  "data": [
    [
      "異類婚姻譚",
      "本谷 有希子",
      "小説",
      168,
      "2016-01-21"
    ],
    [
      "パーフェクト Ruby on Rails",
      "すがわらまさ のり,前島真一,近藤宇智朗,橋立友宏",
      "技術書",
      432,
      "2014-06-06"
    ],
    [
      " すごい家事 人生の「掃除の時間」をグッ と縮める",
      "松橋 周太呂",
      "生活",
      207,
      "2015-12-04"
    ],
    [
      "おやすみ、ロジャー 魔法のぐっすり絵本",
      "カール=ヨ ハン・エリーン",
      "絵本",
      32,
      "2015-11-12"
    ],
    [
      "死んでいない者",
      "滝口 悠生",
      "小説",
      152,
      "2016-01-28"
    ],
    [
      "マネジメント 基本と原則",
      "P.F.ドラッカー",
      "経済・ビジネス",
      320,
      "2001-12-14"
    ]
  ]
}

作成後、ブラウザを更新してみると、"data.json"のデータがテーブル形式で表示されているはずです。




表示されていない場合、次のようなケースが考えられます。

  • "data.json"を作成しても、テーブルが"Loading..."のまま
    多くの場合、データの読み込み失敗が原因です。これまでの流れで起こりやすいのは、以下の2点かと思います。

    1."data.json"がHTMLファイルと同ディレクトリに存在しない
     読み込み対象を相対パスで指定しているので、"data.json"がHTMLファイルと同じディレクトリに存在しなければ、読み込みエラーとなります。

    2.ブラウザによるローカルリソースへのアクセス禁止
     一部のブラウザ(Chrome等)では、ローカルリソースへのアクセスを禁止しているようで、"data.json"がローカル環境にある場合、ブラウザが"data.json"の読み込みを阻害している可能性があります。ブラウザごとにアクセス禁止を緩和する設定がありますが、ブラウザにこだわりがなければ、別のブラウザで表示を確認してみましょう。(FireFoxは表示できました)
  • テーブルにデータは表示されたが、文字化けしている
    jsonはデフォルトでUTF-8でエンコードされているので、"data.json"ファイルの文字コードを"UTF-8"にしておけば、文字化けは解消するはずです。