PromiseベースのHTTPクライアントのaxiosを使って、jsonファイルの取得を試してみます。
使い方
まずはaxiosのインストールですが、npmやbowerなどいくつか方法が用意されています。
今回はCDNを使ってみます。
<script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script>
取得するjsonは以下のデータを使用します。
sample.json
{
"vtuber": [
{ "name": "Lize Helesta" },
{ "name": "Ange Katrina" },
{ "name": "Toko Inui" }
]
}
実際にjsonを取得してみます。
取得は axios.get(‘取得するURL’) の形で指定します。
axios.get('./sample.json')
.then(function (response) {
// 取得成功時
console.log('取得成功', response);
var data = response.data.vtuber;
// ページにjsonの情報を追加
var fragment = document.createDocumentFragment();
for (var i = 0; i < data.length; i++) {
var item = document.createElement('div');
item.textContent = data[i]['name'];
fragment.appendChild(item);
}
document.body.appendChild(fragment);
})
.catch(function (error) {
// 取得失敗時
console.log('取得失敗', error);
})
.then(function () {
// 取得成功・失敗の処理後に共通で実行
});
これで問題ないかと思ったのですが、IE11だと「’Promise’ は定義されていません。」のようなエラーとなっていました。
axiosでjsonを取得するデモページ
IE11でPromiseが使えないことが原因なので、polyfillを読み込むようにするといいようです。
<script src="https://www.promisejs.org/polyfills/promise-7.0.4.min.js"></script> <script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script>
これでIE11でもjsonファイルの取得ができました。
axiosでjsonを取得するデモページ2
コメントが承認されるまで時間がかかります。