KATUUUNs blog

プログラミング学習で得た知識をアウトプットするためのブログです

学習23日目 JavaScriptとお友達になる!

こんにちは!KATUUUNです。今週からJavaScriptを学習しています。早く使いこなしてロントサイドで威力を発揮したいです。

昨日に引き続きJavaScriptで学習したことをアウトプットします。

今日はトップページ内の投稿フォームにコメント記述し、投稿ボタンを押したら、コメントがトップページに表示される流れについて



1.まずは投稿機能を非同期通信化する。

 .jsファイルを作成。その後ページが読み込まれることをトリガーにしてイベントを発生させる。

function post (){
  (処理)
};

window.addEventListener('load', post);

ここではloadイベントをaddEventListener()で発火させました。


2.投稿ボタンをクリックしたら投稿フォームがコンソールに表示される

function post (){
  const submit = document.getElementById("submit_btn");
  submit.addEventListener("click", (e) => {
    console.log(document.getElementById("new_article"));
    e.preventDefault();
  });
};

window.addEventListener('load', post);

・id名はあくまで一例です。またちゃんと所得できているかを確認するためにコンソールに表示させています。
・クリックした時にイベントが発火するためclickというイベント名を用いています。
・ブラウザからのリクエストキャンセルするためにpreventDefault()メソッドを使用します。


3.サーバーへリクエストする

function post (){
  const submit = document.getElementById("submit_btn");
  submit.addEventListener("click", (e) => {
    const formData = new FormData(document.getElementById("new_article"));
    const XHR = new XMLHttpRequest();
    XHR.open("POST", "/articles", true);
    XHR.responseType = "json";
    XHR.send(formData);
    e.preventDefault();
  });
};

window.addEventListener('load', post);

・FormData(document.getElementById("new_article"))によってコメントの内容を所得しています
・const XHR = new XMLHttpRequest();によってjavaがサーバーとHTTP通信を行えます
・XHR.open("POST", "/articles", true);によってリクエストの内容を具体化しています
・XHR.responseType = "json";によってレスポンス時にjson形式で返すようにしています。
・ XHR.send(formData);の記述で送ります


4.レスポンスを受け取る

function post (){
  const submit = document.getElementById("submit_btn");
  submit.addEventListener("click", (e) => {
    const formData = new FormData(document.getElementById("new_article"));
    const XHR = new XMLHttpRequest();
    XHR.open("POST", "/articles", true);
    XHR.responseType = "json";
    XHR.send(formData);
    XHR.onload = () => {
      console.log(XHR.response.article);
    };
    e.preventDefault();
  });
};

window.addEventListener('load', post);

XHR.onload はリクエストの送信が成功したときに呼び出されるプロパティ

5.レスポンスの情報をブラウザに表示する

function post() {
  const submit = document.getElementById("submit_btn");
  submit.addEventListener("click", (e) => {
    const formData = new FormData(document.getElementById("new_article"));
    const XHR = new XMLHttpRequest();
    XHR.open("POST", "/articles", true);
    XHR.responseType = "json";
    XHR.send(formData);
    XHR.onload = () => {
      const item = XHR.response.article;
      const contentsArea = document.getElementById("contents_area");
      const articleText = document.getElementById("article_text");
      const HTML = `
        <div class="article">
          ${ item.text }
        </div>`;
      contentsArea.insertAdjacentHTML("afterbegin", HTML);
      articleText.value = "";
    };

    e.preventDefault();
  });
};
window.addEventListener("load", post);


以上です