ajaxリクエストの使用方法
AJAXを使ったリクエストについて説明します。
CS-CartのAJAX 基本コンセプト
CS-CartはjQueryのAjaxメソッドに独自の拡張を加えて構成されています。 コードは_/js/ajax.js_ ファイルに書かれています。
これらを呼び出す手順は以下の通りです:
submitForm
(form のみ) – フォーム内のデータを抜き出し、送信準備をします。request
– それぞれのコントローラー(dispatchからパース)にAJAXリクエストを送します。jQueryのajaxメソッドを使用します。response
–request
の実行が成功すると呼び出されます。実際のサーバーの応答と結果表示します。inProgress
– AJAXリクエストが進行しているかどうかclearCache
– レスポンスのキャッシュをクリア
サーバーでAJAXリクエストが行われている時、AJAXリクエストのサブシステムの初期化はfn_init_ajax
(/functions/fn.init.php) 機能によって実行されます。
AJAXクラス(/Tygh/Ajax.php) のオブジェクトが作られます。
AJAXリクエストの前後に必要な変換を実行し、さらにresponse
へ変換するためJSON配列を生成します。これらの_AJAX_REQUEST_ はPHPコードで利用することが出来ます。
PHPファイル(コントローラー)で以下のように_AJAX_REQUEST_ を使用すると、AJAXリクエストが渡された場合のみで実行するコードを書くことが出来ます。
例:
AJAXリクエストのスクリプトが完了、または終了関数exit()
が明示的に呼び出されると、
AJAXクラス(/Tygh/Ajax.php) のディストラクタが実行されます。
ディストラクターはJSON形式のデータ配列にドキュメントに表示されるべき情報を渡し、その後、Javascriptの関数 response
(/js/tygh/ajax.js) に配列を渡します。
コントローラーは以下の形式でレスポンスを返します。
マイクロフォーマットでAJAXを呼び出す
AJAXリクエストはリンクやフォームを使って送信することができます。どちらの場合もマイクロフォーマットcm-ajax
はそれぞれの要素に指定する必要があります。
フォームの場合
フォームにcm-ajax
が書かれている場合、そのコンテンツはAJAXリクエストとしてアクション属性に定義されたURLに送信されます。
そのようなフォームにはresult_ids
と呼ばれる非表示の入力要素があります。
それにはAJAXデータで更新される要素の識別名が含まれていなければなりません。
AJAXフォームの例
リンクの場合
リンクがクリックされた際、cm-ajax
の書かれたリンクはhref属性で定義されたURLにAJAXリクエストを送信します。
更新する要素のIDはrev
属性で指定する必要があります。
AJAXリンクの例:
その他のマイクロフォーマット
マイクロフォーマットcm-ajax
はAJAXフォームやリンクのため必要不可欠です。
CS-Cartには開発者がAJAXを管理出来るるたくさんのオプションマイクロフォーマットがあります。
AJAXリクエストを直接使用する
明示的にメソッドを呼び出すことはCS-Cartのコーディングガイドラインでは推奨されていません。
すべてのJavascript関数は別々のファイルに書き、CSSセレクタ(id,やclass など)を使用して、HTML要素に割り当てる必要があります。
しかしながら、AJAXリクエストは$.ceAjax()
メソッドは直接インライン・コールを送ることができます:
AJAXを介したコンテナのリロード方法
CS-Cartでは以下のように、コンテナのコンテンツを動的にリロードできます
cm-ajax
クラスとそのresult_ids
構成部分を含むフォームを送信します(microformatsに関する記事を参照)。cm-ajax
クラスとdata-ca-target-id
属性のリンクを使用します(microformatsに関する記事を参照)。$.ceAjax()
でカスタムリクエストを作成します。id
は開始タグの最後の属性でなければなりません。「マジックコメント」
id
は、終了タグの前にある必要があります。
最終更新