非同期送信の仕組み

Experience Manager Forms には、すぐに使用できる、フォーム送信の成功および失敗ハンドラーが用意されています。ハンドラーは、サーバー応答に基づいて実行されるクライアントサイド関数です。フォームが送信されると、データが検証のためにサーバーに転送され、送信の成功またはエラーイベントに関する情報と共に、応答がクライアントに返されます。この情報は、関連するハンドラーにパラメーターとして渡され、関数が実行されます。

また、フォームの作成者と開発者は、フォームレベルでルールを記述して、デフォルトのハンドラーを上書きできます。詳しくは、「ルールを使用したデフォルトハンドラーの上書き」を参照してください。

最初に、成功およびエラーイベントに対するサーバー応答について説明します。

送信成功イベントに対するサーバー応答

送信成功イベントに対するサーバー応答は、以下のような構造になっています。

{oneOf: [
{  properties : {
     contentType : {"type" : "string",  "enum" : ["xmlschema", "jsonschema"]},
    data : {type : "string", description : "Form data in XML or  JSON  format"},
   thankYouOption : {type : "string"}
   }},
  properties : {
     contentType : {"type" : "string",  "enum" : ["xmlschema", "jsonschema"]},
    data : {type : "string", description : "Form data in XML or  JSON  format"},
   thankYouContent: {type: "string"}
   }
]

}

フォーム送信が成功した場合に含まれるサーバー応答を以下に示します。

  • フォームデータのフォーマットタイプ:XML または JSON
  • XML 形式または JSON 形式のフォームデータ
  • フォームに設定された、ページにリダイレクトするかメッセージを表示するために選択されたオプション
  • フォームに設定された、ページの URL またはメッセージの内容

成功ハンドラーは、サーバー応答を読み取り、それに応じて、設定されたページ URL にリダイレクトしたりメッセージを表示したりします。

送信エラーイベントに対するサーバー応答

送信エラーイベントに対するサーバー応答は、以下のような構造になっています。

{
   errorCausedBy : "<CAPTCHA_VALIDATION or SERVER_SIDE_VALIDATION>",

   errors : [
               { "somExpression" : "<SOM Expression>",
                 "errorMessage"  : "<Error Message>"
               },
               ...
             ]
 }

フォーム送信がエラーになった場合に含まれるサーバー応答を以下に示します。

  • エラーの理由、失敗した CAPTCHA またはサーバーサイド検証
  • 検証が失敗したフィールドの SOM 式と、対応するエラーメッセージを含む、エラーオブジェクトのリスト

エラーハンドラーは、サーバー応答を読み取り、それに応じて、フォーム上にエラーメッセージを表示します。

ルールを使用したデフォルトハンドラーの上書き

フォームの開発者と作成者は、デフォルトのハンドラーを上書きするルールをフォームレベルで作成できます。成功イベントおよびエラーイベントに対するサーバー応答は、フォームレベルで公開されます。開発者は、ルール内で $event.data を使用してサーバー応答にアクセスできます。

成功イベントとエラーイベントを処理するためのルールを作成するには、以下の手順を実行します。

  1. アダプティブフォームをオーサリングモードで開いて、任意のフォームオブジェクトを選択し、 edit-rules1 を選択してルールエディターを開きます。

  2. フォームオブジェクトツリーで「フォーム」を選択し、「作成」を選択します。

  3. 正常に送信された」または「送信が失敗した」を​ 状態を選択 ​ドロップダウンリストから選択します。

  4. 選択した状態の THEN アクションを定義します。例えば、「次に移動」を選択し、URL を入力または貼り付けます。「関数」タブを使用して、任意の関数をルールにドラッグすることもできます。

    送信ハンドラーの成功

  5. 完了」を選択して、ルールを保存します。

Experience Manager