見出し画像

Java Scriptの基礎その29 AJAX Call XMLHttpRequest


イントロダクション

この記事では、JavaScriptの基本的なスクリプトを用いて、国のデータを取得し、ウェブページ上に表示する方法について解説します。この方法は、旧式の書き方を使っていますが、まだ多くのWebアプリで対応しているため、知っておくと便利です。コードを理解しながら、最新の技術との違いを学ぶことで、より効果的にJavaScriptを活用できるようになります。

DOM要素の取得

ボタンとコンテナの選択

最初に、DOM(Document Object Model)から特定の要素を取得します。これにはdocument.querySelectorを使用します。

const btn = document.querySelector('.btn-country');
const countriesContainer = document.querySelector('.countries');
  • const btnは、クラス名がbtn-countryのボタン要素を取得します。

  • const countriesContainerは、クラス名がcountriesのコンテナ要素を取得します。

これにより、後でこれらの要素に対して操作を行うことができます。

国データの取得

XMLHttpRequestを使ったリクエスト

次に、指定した国のデータを取得するために、XMLHttpRequestオブジェクトを使用します。

const getCountryData = function (country) {
  const request = new XMLHttpRequest();
  request.open('Get', `https://countries-api-836d.onrender.com/countries/name/${country}`);
  request.send();
  console.log(request.responseText);
  • const request = new XMLHttpRequest();は、新しいリクエストオブジェクトを作成します。

  • request.open('Get', URL);は、指定されたURLに対してGETリクエストを開きます。

  • request.send();は、リクエストを送信します。

このコードは非同期で実行され、レスポンスが受信されると次のステップに進みます。

データの処理

レスポンスが受信された後、データを処理してウェブページに表示します。

  request.addEventListener('load', function () {
    const [countryData] = JSON.parse(this.responseText);
    console.log(countryData);

• request.addEventListener('load', function() {...});は、リクエストが完了したときに実行される関数を指定します。
• const [countryData] = JSON.parse(this.responseText);は、レスポンスのJSONデータを解析し、最初のオブジェクトを取得します。

これにより、取得したデータを使ってHTMLを生成する準備が整います。

HTMLの生成と表示

国データのHTML生成

取得した国データを元にHTMLを生成し、ページに挿入します。

    const html = `
        <article class="country">
          <img class="country__img" src="${countryData.flag}" />
          <div class="country__countryData">
            <h3 class="country__name">${countryData.name}</h3>
            <h4 class="country__region">${countryData.region}</h4>
            <p class="country__row"><span>👫</span>${(+countryData.population / 1000000).toFixed(1)} million people</p>
            <p class="country__row"><span>🗣️</span>${countryData.languages[0].name}</p>
            <p class="country__row"><span>💰</span>${countryData.currencies[0].name}</p>
          </div>
        </article>
    `;
    countriesContainer.insertAdjacentHTML('beforeend', html);
    countriesContainer.style.opacity = 1;
  });
};
  • const html = ...は、取得したデータを使ってHTMLテンプレートを生成します。

  • countriesContainer.insertAdjacentHTML('beforeend', html);は、生成したHTMLを指定したコンテナの中に挿入します。

  • countriesContainer.style.opacity = 1;は、コンテナを表示するためのスタイル変更を行います。

国データの取得と表示の実行

最後に、特定の国のデータを取得して表示するために関数を呼び出します。

getCountryData('portugal');
getCountryData('usa');
  • getCountryData('portugal');は、ポルトガルのデータを取得して表示します。

  • getCountryData('usa');は、アメリカのデータを取得して表示します。

まとめ

この記事では、JavaScriptを使って国のデータを取得し、ウェブページ上に表示する方法について説明しました。この方法は旧式ですが、多くのWebアプリでまだ使用されています。最新の技術に対応するためにも、こうした基礎を理解しておくことが重要です。これからもJavaScriptの様々な機能を学び、実際のプロジェクトに活用していきましょう。

Githubでも公開してるよ!

先ほどのコードはGithubで公開しているよ。
ここ見てね!

この記事が気に入ったらサポートをしてみませんか?