2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

プレーンなJavaScriptを使って別ファイルのJSONの情報を引っ張ってくる方法

Last updated at Posted at 2020-06-24

前提

planeなJavascriptを使って外部ファイルのJSONの情報を取得するやり方です。

JSONを久しく触っていない+いつもjQueryでやっていたのでやり方がわからず時間をとったのでここにメモします。

ファイルを作る

まずHTMLファイルとJSONファイルを作成します。

中身はお互いこんな感じ。

<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>json research</title>
</head>
<body>
    <div class="wrapper">
        <input type="button" value="JSONファイルを取得し、内容をブラウザのコンソールへ出力" onclick="getJSON();">
    </div>
</body>
</html>
[
	{"id":1,"name":"AAA"},
	{"id":2,"name":"BBB"},
	{"id":3,"name":"CCC"}
]

イメージとしてはボタンをクリックするとJSONにある情報を取ってくるといった感じです。

Javascript

古かったら申し訳ないのですが、以下で動作確認できました。

<script>
    function getJSON() {
        let req = new XMLHttpRequest();
        req.onreadystatechange = function() {
            // サーバーからのレスポンスが正常&通信が正常に終了したとき                
            if(req.readyState == 4 && req.status == 200) {
                // 取得したJSONファイルの中身を変数へ格納
                let data = JSON.parse(req.responseText);
                // JSONのデータ数を取得
                let len = data.length;
                for (let i = 0; i < len; i++) {
                    console.log("id: " + data[i].id + ", name: " + data[i].name);
                }
            }
        };
        //HTTPメソッドとアクセスするサーバーのURLを指定
        req.open("GET", "./sample.json", false);
        //実際にサーバーへリクエストを送信
        req.send(null);
    }
</script>

まとめ

JSONは結構使う場面が多いので覚えておきましょう。

参考

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?