Presentation is loading. Please wait.

Presentation is loading. Please wait.

Copyright © 2001-2005 Ariel Networks, Inc. AJAX 勉強会 アリエル・ネットワーク株式会社.

Similar presentations


Presentation on theme: "Copyright © 2001-2005 Ariel Networks, Inc. AJAX 勉強会 アリエル・ネットワーク株式会社."— Presentation transcript:

1 Copyright © 2001-2005 Ariel Networks, Inc. AJAX 勉強会 アリエル・ネットワーク株式会社

2 Copyright © 2001-2005 Ariel Networks, Inc. Ajax とは Ajax と通常の Web アクセスとの違い Ajax のメリット、デメリット Ajax を使う Ajax を使っているサイト 簡単な実装例 Ajax を使う上での注意 Ajax 対応ライブラリ

3 Copyright © 2001-2005 Ariel Networks, Inc. Ajax とは Asynchronous JavaScript and XML – 「 Javascript で」、サーバーと「非同期に」「 XML データを」やり取りする Ajax: A New Approach to Web Applications –http://www.adaptivepath.com/publications/essays/archives/000385.php –http://antipop.gs/docs/translations/ajax.html (日本語訳)

4 Copyright © 2001-2005 Ariel Networks, Inc. Ajax と通常の Web アクセスとの違い 通常の Web アクセス –GET や POST による HTTP リクエストをサーバーに投げる – リクエストに応じてサーバーから返される HTML をブラウザに表示する Ajax –JavaScript を使って適宜バックグラウンドでサーバーと通信する – サーバーから XML データを取得し、ダイナミック HTML で表示を更新する

5 Copyright © 2001-2005 Ariel Networks, Inc. Ajax と通常の Web アクセスとの違い

6 Copyright © 2001-2005 Ariel Networks, Inc. Ajax と通常の Web アクセスとの違い 従来の Web アクセス

7 Copyright © 2001-2005 Ariel Networks, Inc. Ajax と通常の Web アクセスとの違い Ajax の場合

8 Copyright © 2001-2005 Ariel Networks, Inc. Ajax のメリット、デメリット メリット – 柔軟な動作の RIA(Rich Internet Applicatoin) を実現できる – 動作させるためにプラグインが必要ない – 商用の開発環境が必要ない デメリット – ブラウザによって動作に微妙な違いがある – ブラウザのローカルキャッシュが Ajax の動作に影響を与える場合がある –Ajax でアクセスできるのは、元ページと同じドメイン内の URL に限られる – プログラムの中身がユーザーに丸見えになる (メリットでもある ? )

9 Copyright © 2001-2005 Ariel Networks, Inc. Ajax を使っているサイト Google サジェスト –http://www.google.co.jp/webhp?complete=1 Google ローカル –http://maps.google.com/ Amazon の A9.com –http://a9.com/ Banana republic –http://www.bananarepublic.com/ Zimbra –http://www.zimbra.com/

10 Copyright © 2001-2005 Ariel Networks, Inc. Ajax を使う Ajax を用いた実装とは、 –JavaScript で XMLHttpRequest オブジェクトを利用 – ページ全体の読み込みとは非同期にサーバーと通信 – ダイナミック HTML を利用してページの必要な部分だけを書き換える XMLHttpRequest オブジェクト –IE5.0 以降 (1999 年 3 月 ) –Mozilla 1.0 以降 (2002 年 6 月 ) 昔からある技術を組み合わせて、 Ajax という名前を付けただけ

11 Copyright © 2001-2005 Ariel Networks, Inc. 簡単な実装例 var HttpRequest; function hoge(url) { if (this.XMLHttpRequest) { HttpRequest = new XMLHttpRequest(); } else { HttpRequest = new ActiveXObject("Microsoft.XMLHTTP"); } HttpRequest.onreadystatechange = readyStateChangeHandler; HttpRequest.open("GET", url, true); HttpRequest.send(null); } function readyStateChangeHandler() { if (HttpRequest.readyState == 4) { if (HttpRequest.status == 200) { var obj = document.getElementById(“fuga"); obj.innerHTML = HttpRequest.responseText; }

12 Copyright © 2001-2005 Ariel Networks, Inc. XMLHttpRequest オブジェクトのメソッド メソッド解説 abort() リクエストの中止 getAllResponseHeaders() レスポンスのヘッダをすべて取得 getResponseHeader("headerLabel") レスポンスのヘッダ "headerLabel" の値を取得 open("method", "URL"[, asyncFlag[, "userName"[, "password"]]]) リクエストの方法、 URL 、同期 / 非同期アクセス、 ユーザ名、パスワードをセットする send(content) リクエストを送信する setRequestHeader("label", "value") リクエストのヘッダ "label/value" を指定する

13 Copyright © 2001-2005 Ariel Networks, Inc. XMLHttpRequest オブジェクトのプロパティ プロパティ解説 onreadystatechange ステータスが変わったときに呼ばれるイベントハンドラ readyState オブジェクトのステータス : 0 (UNINITIALIZED) オブジェクトは、作成されていますが、まだ、初期化されていません (open メソッドは呼ばれていません ) 。 1 (LOADING) オブジェクトが作成されましたが、まだ、 send メソッドは呼ばれていません。 2 (LOADED) send メソッドは呼ばれましたが、 status とヘッダはまだ届いていません。 3 (INTERACTIVE) いくつかのデータを受け取りました。この状態では responseBody や responseText プロパティはエラーを返すでしょう。それは、 status とレスポンスヘッダがまだすべ て届いていないからです。 4 (COMPLETED) すべてのデータを受け取りました。 responseBody と responseText プロパティの 完全なデータが利用可能です。 responseText 受け取ったデータの文字列 responseXML 受け取ったデータの XML status サーバから受け取ったステータスコード 404 や 200 など statusText Status コードに対応した文字列 404 であれば "Not Found" とか、 200 であれば "OK" など

14 Copyright © 2001-2005 Ariel Networks, Inc. 簡単なデモ

15 Copyright © 2001-2005 Ariel Networks, Inc. Ajax を使う上での注意 アクセスするドメイン制限 –Ajax でアクセスできるのは、同じドメイン内に限定される 文字コード ブラウザのローカルキャッシュ XML データの取り扱い

16 Copyright © 2001-2005 Ariel Networks, Inc. 文字コードについて 日本語を扱う場合 –Ajax でそのまま日本語を送受信すると文字化けするブラウザがある –Form など ブラウザが自動的に URI エンコードしてくれる –Ajax 明示的に URI エンコードする必要がある Javascript で使用できる方法 –escape() 古いメソッドで、ブラウザにより実装が異なる –encodeURI() と encodeURIComponent() ECMAScript の仕様に従ったメソッド どんな文字コードの文字列でも UTF-8 にしてエンコードする

17 Copyright © 2001-2005 Ariel Networks, Inc. ブラウザのローカルキャッシュ Ajax によるサーバーへのアクセスもブラウザのキャッシュが有効になる –→ 意図しない動作や、まったく動作していないように見えてしまう ブラウザのキャッシュの設定を無効にする アクセス時に毎回値が異なるパラメータを追加する –url = url + "t=“ + (new Date()).getTime(); リクエストヘッダに細工をする –xmlHttpRequest.setRequestHeader("If-Modified-Since", "Thu, 01 Jun 1970 00:00:00 GMT");

18 Copyright © 2001-2005 Ariel Networks, Inc. XML データの取り扱い responseXML は XML オブジェクト responseText はテキストデータ XML データを Javascript で扱うには DOM 操作が必要 – 取り扱いにくい responseXML alert(responeXML.firstChild.nodeValue); JSON ( JavaScript Object Notation ) var JSONObject = { "test1": "hello1“, "test2": "hello2“ }; alert(JSONObject.test1); JKL.ParseXML http://www.kawa.net/works/js/jkl/parsexml.html hello1 hello2

19 Copyright © 2001-2005 Ariel Networks, Inc. Ajax 対応ライブラリ prototype.js –http://prototype.conio.net/ jslb_ajax.js –http://jsgt.org/mt/archives/01/000409.html Survey of AJAX/JavaScript Libraries –http://wiki.osafoundation.org/bin/view/Projects/AjaxLibraries

20 Copyright © 2001-2005 Ariel Networks, Inc. Q&A


Download ppt "Copyright © 2001-2005 Ariel Networks, Inc. AJAX 勉強会 アリエル・ネットワーク株式会社."

Similar presentations


Ads by Google