let's create! WordPressサイト制作とメンテ/エラー対応から、PHP/CSS/javascriptプログラミング、動画・音・イラスト等制作まで扱うコラム

【jquery/ajax通信】最初は空で、ボタンを押すとrest-apiから記事とってきて表示する方法(タブパネルカテゴリ切り替え式)

更新: 2024/04/11 1597文字

今回は、jquery/ajax通信を使用して、このサイト(https://division-web.atelier-ss-agency.com)のrest-apiから記事を取ってきて表示する方法を紹介します。非同期通信ということで、ページをロードし終わり、ボタンを押してから記事を取るという流れ。かつ、タブパネルでカテゴリ切り替え式です。早速内容をみていきましょう。

下準備~api形式押さえておく&表示したいページを作り、id属性つけておく

まずは、取ってくるapiの形式をチェックしましょう。このサイトはWordPressで構築してあって、rest-apiがつかえます。以下のような形式でカテゴリidだけ変えて5件取得(per_page=5)、4カテゴリ分をタブパネルで切り替える、タブ押したとき記事をロード、という仕様を想定。

■apiのurl
https://ドメイン/wp-json/wp/v2/posts?categories=〇〇(カテゴリid)&per_page=5

また、こんな感じでタブパネルで表示するボックスを作っておきました。『btn-active contents-active』が、初期状態で表示するボックスです。
また、ボタンにtabbtn1、ボックスにviewResult1のようなidを振っておきました。

そのほか、jqueryもcdnで読み込んでおきます。

jquery/ajaxで、ボタンを押すとrest-apiから記事とってきて表示するコード

コード

とりあえずこんな形で。ajaxで取ってくる部分は共通部分も多いので、書き方変えればループでいけそうですが、idごとに分けました。そのほか、html&css部分もまとめています。

しくみについて

ボタン#tabbtn4の例です。oneになっているのは『1回とればよいから』です。セッティングは『url,method,timeout』だけですが、他にもいっぱいあるみたいです。$.ajax(settings).doneのときに、eachで5件分ループ回して.appendで要素をくっつけていきます。

また、doneのときに初期表示メッセージを非表示(.css('display','none'))も呼ぶようにしました。

表示例

では表示してみます。ページロードして初期状態。この時点では記事はまだロードしていません。

こんな感じで、タブを押すとロード。url遷移はしません。

他のタブも。ちなみに、以下のurlに実際の表示例が確認できるページを用意したので、こちらもご確認ください。

あとがき・まとめ

  • jquery/ajaxで、ボタンを押してから記事をロードするページを作ることができる(url遷移無し)
  • 送信後の判定ができれば、そのタイミングで取ってきた要素をセットしたり、表示を切り替えたりが可能

まとめると、こんなところでしょうか。実は、いままでお仕事案件でajax非同期通信使ったことなかったんだけど(笑)、シングルページアプリとかやるときのために押さえておきます。


【カテゴリ】- javascript/jQuery、その他
【タグ】- ,

関連記事