「Webサービスを(少しずつ)構築する」 第5回

5. Ajax動作の実現

道具

概要1(Ajaxとは)

概要2(jQueryの基礎知識)

概要:

実体:

主な文法要素:

  1. $ 関数:2つの用途を知っておこう。
    1. jQueryオブジェクトの生成:

      // 前述のHTMLファイルを開いてブラウザのコンソールで
      // 以下の(各行の)式を試してみよう
      $(document)
      $(document.body)
      // 或いは、このページを表示中にコンソールを開いて試してみる
      $('h1')
      $('h2')
      $('p')
      $('#section-1')
      $('.language-javascript')
      $('<p>aaa</p>')
      
    2. ready の糖衣構文:

      ページを読み込んでプログラムの動作が開始できる状態になった時に呼び出されるコードを書くための関数が、 DOMのdocument要素(に対応した jQueryオブジェクト)に用意された readyメソッド。これを書くための 簡易構文として以下の(後の方の)記法が好んで使われている。

      $(document).ready(function(){
        // 初期化のためのコード...
      })
      // これは以下のように書いてもいい
      $(function(){
        // 初期化のためのコード
      })
        // またはダブルアローを用いて
      $(()=>{
        // 初期化のためのコード
      })
      
  2. jQueryオブジェクト:

参考資料

使い方

手順

(以下の手順は、必ずしもこの通りの順序で実施しないといけない訳ではなく、 考え方の筋道として便宜上順序立てたもの。)

  1. 入力を受理するAPIの決定

    を決めておこう。

  2. サーバ側プログラム

     router.post('/add',(req,res)=>{
       let date=new Date().toLocaleString(),
           memo=req.body.memo
       db.memo.create({date:date,memo:memo}).
         then((created)=>{
           res.json({date:date,memo:memo,id:created.dataValues.id})
       })
     })
    

    CDN1

  3. jQueryを組み込む 1:

    (views/memo.pugの変更箇所)

  4. jQueryを組み込む2:

    (views/memo.pugの変更箇所)

      script.
        $(()=>{
          // この中は次項で
        })
    
  5. ページ遷移からAjax呼出への変更:

    (views/memo.pugの変更箇所)

     //- form(method='post', action='/memo/add')
     textarea(name='memo',rows="4" cols="40") 思ったこと記憶すべきこと    input(type="submit" value="送信")
    
  6. データの送受信:

    (views/memo.pugの変更箇所)

    function send(){
      let memo=$('textarea').val()       // textarea jQueryオブジェクトの .text() だと
                                         // 現在の値ではなく初期値が得られてしまうようだ
      $.post('/memo/add',{memo:memo},recv)
         // もちろん 変数に代入せず memo(<- : の右側のほう)
         // の代わりに上のjQuery式をそのまま渡してもいい
        }
    
  7. その他の変更