チップス

Head Rush Ajax 学びながら読むAjax入門 を読む 3章


3章 非同期アプリケーション

ajaxbooks ユーザがサーバにリクエストを送信した後、

レスポンスが帰ってくるのを待たずに

そのまま操作を続けられるようにするにするにはどうすればよいか

を学ぶ。

  1. 非同期の本質とは?
  2. Ajaxな珈琲メーカーアプリケーションを作ろう
  3. Ajax開発、行ったり来たり
  4. 「反復開発(iterative development)」

    • アプリケーションの多くは「反復的」に作られる。一度奇術をすませた部分にも、必要な場合はそこに戻って改良を加える方法。
  5. JavaScriptとHTMLを分離させる
    • アプリケーションのロジック(JavaScript)を、アプリケーションの構造とスタイル(HTML と CSS)から分離させるために、JavaScriptは別ファイルに記述することにする。
      1. ajax.js:すべてのAjaxアプリケーションに胸痛のどー度を格納するファイル
      2. coffee.js:コーヒーメーカーのアプリケーションに固有のコードを格納するファイル
  6. JavaScriptを分離する
  7. リクエストを送信してコーヒーを淹れる
  8. ラジオボタングループから値を得るには
  9. function getSize() {
      var sizeGroup = document.forms[0].size;
      for (i=0; i
    
  10. 非同期アプリケーションと同期アプリケーション
  11. <div>内のテキストの取得と変更
  12. <div>エレメント内のテキストを更新する
  13. オーダーボタンを押下して注文が行われたと同時にフォームをクリアする

    • フォームの内容をクリアするには、reset()メソッドを使う。
    • orderCoffee関数内で document.forms[0]reset();
  14. PHP... at a glance
  15. コールバック関数を作成する
  16. serveDrink()

    • サーバからのレスポンスを受信すると、注文者の名前と、コーヒーを作成し終えたコーヒーメーカーの番号を調べ、次に、そのコーヒーメーカーのステータスを「待機中」に変更して注文者にコーヒーが出来たことを知らせる。
  17. JavaScriptのsubstring()関数を使う
  18. coffee.jsで使用している。

  19. 最終テスト(ですよね?)
  20. requestオブジェクトが2つ必要です!
  21. 2つのrequestオブジェクトを使う
  22. 非同期ワールドへようこそ!

非同期通信とは

非同期とは、Webサーバがリクエストに応答している間、その処理が終わるのをクライアント側が待たなくても良いということを意味する。つまり、ユーザは「足止め」されずに、そのまま操作を続けることができ、サーバがリクエスト処理を終えたら、それをサーバから知らせてもらう。

サンプル 「非同期なコーヒーメーカー」をつくるための3つの材料

  1. コーヒーメーカーHTML
    • 注文入力を受け付けるとともに、2つのコーヒーメーカーがどのような状態にあるかを表示する。
  2. JavaScriptコード
    • requestオブジェクトを作成するコード
    • サーバサイドのコーヒー作成スクリプトに注文を送信する関数
    • コーヒーが出来たら、それを注文した人に知らせるための関数
    • これらのjavaScript関数とWebフォームのボタンを関連付けるためのイベントハンドラ
  3. サーバ側でコーヒーを作成するスクリプト PHP
    • このアプリケーションでは2つのコーヒーを同時に作る必要があるので、このスクリプトでは、2つのコーヒーメーカーを使って注文を処理しなくてはならない。
    • このPHPスクリプトが子ヒーを作る。注文はすべてこのスクリプトに送信する。

サンプル coffee.jsとで定義されているfunction

sendRequest(request, url)
getSize()
getBeverage()
orderCoffee()
serveDrink()

<p id="clear"></p>

CSS:clear:bothは回り込みの解除です。

#clear {
  clear: both;
}

substring関数、length関数

文字列の中から、指定した範囲の文字列を切り出す。

var newString = myString.substring(startIndex, endIndex);
var newString = myString.substring(2, myString.length)

startIndex:切り出し開始文字のインデックス。1番先頭文字=0に注意。
endIndex:切り出し終了文字のインデックス。


   チップス