JSONに向き合う
ずっと逃げていたJSONに向き合います。 削除とかクリップ機能とかを非同期通信でやれたら良いな...
はじめに
非同期通信の話になると、いつもJSONなる単語が出てきます。
ここでJSONとは、JavaScript Object Notionの略です。
なるほど。今思うと、同一ページ内で動きを付けようと思ったら、JavaScriptで記述する必要がありました。
JSによって、クラスを付け加えたり、色を変化させたり、打ち込んでいる文字数をリアルタイムで表示したりできます。しかし、その際、リロードはしていなかったなと。
では、何かしらの方法で情報 (JSON) を持ってくれば、JSを用いて、ページ描写 (非同期通信) ができそうです。
JSON
JSONの書き方は単純です。
基本的には、以下のようにキーと値を1セットで書きます。
JSONの中身はJSなので、console.logで都度確認できます。
var JSON = { "hoges":[{ "color":"black", "shape":"circle" },{ "color":"white", "shape":"square" }] }
文法のチェックは以下サイトで確認できます。
https://jsonlint.com/
画面描写
例えば、html側で以下のようなクラスがあるとします。
<div id="hoge"></div>
次のようにクラスを指定して、innnerHTMLを使えば、JSONの内容を描写できます。
document.getElementById('hoge').innerHTML = ... ;
素のJSONのままでは使えないので、必要なデータを取り出す必要があります。
for文を使うと、以下のようになります。
一行目でhogesの中身を取得しています。
二行目以降で{}内の情報を順次取り出しています。
objects = JSON.hoges; for (x in objects) { objects[x].color + 'and' + objects[x].shape }
先ほどのと組み合わせるとこうなります。これで、画面描写できます。
var objects = JSON.hoges; var html = ''; for(x in objects) { html += objects[x].color + ' and ' + objects[x].shape + '<br>' } document.getElementById('hoge').innnerHTML = html;