Vue.jsでjsonを取得する方法を、axiosを使う場合とfetch()を使う場合でそれぞれ試してみます。
axiosを使う場合
まずはaxiosを使ってsample.jsonのようなjsonファイルを取得してみます。
まず必要なファイルを読み込みます。
<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> <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
次にjsonの内容を表示するHTMLを用意します。
<div id="app">
<ol>
<li v-for="person in vtuber">{{ person.name }}</li>
</ol>
</div>
最後にJavaScriptです。
mounted内で取得処理を行っています。
var app = new Vue({
el: '#app',
data: {
vtuber: []
},
mounted: function() {
var self = this;
axios
.get('./sample.json')
.then(function(response) {
self.vtuber = response.data.vtuber;
})
.catch(function(error) {
console.log('取得に失敗しました。', error);
})
}
})
jsonデータはresponse.data 内に入っています。
axiosを使う場合のデモページ
fetch()を使う場合
次にfetch()を使う場合です。
先ほどの読み込みからaxiosを外します。
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
HTMLは先ほどと同じなので省略します。
JavaScriptもmounted内の取得処理以外は同じですが、先ほどはIE11も想定に入れていたので記述を少し変更しています。
var app = new Vue({
el: '#app',
data: {
vtuber: []
},
mounted() {
fetch('./sample.json')
.then(response => {
return response.json();
})
.then(json => {
this.vtuber = json.vtuber;
})
}
})
fetch()はIEでは対応していないため、今回は想定から外しています。
fetch()を使う場合のデモページ
コメントが承認されるまで時間がかかります。