intra-mart Accel Kaiden! プログラミングガイド 第12版 2020-04-01

3.3.4. Ajax

intra-mart Accel Kaiden!では簡単にAjax通信が行るような機構を用意しています。
本項では、intra-mart Accel Kaiden!を使用した基本的なAjax通信の方法を解説します。

3.3.4.1. 基本的なプログラミング方法

簡単な例を用い、Ajax通信の基本的なプログラミング方法を解説します。
  • Actionクラス
    「jp.co.slcs.kaiden2.base.foundation.model.dto.LogicResultDto」をJSONに変換したデータを返却してください。
    import jp.co.slcs.kaiden2.base.foundation.model.dto.LogicResultDto;
    import jp.co.slcs.kaiden2.base.foundation.util.ResponseWriter;
    import jp.co.slcs.kaiden2.base.foundation.conf.LogicResultStatus;
    import net.arnx.jsonic.JSON;
    
    @Execute(validator = false)
    public String index() {
    
        /**~略~**/
        LogicResultDto result = new LogicResultDto();
        result.data  = "クライアントへの返却データ";
        result.status = LogicResultStatus.SUCCESS.getName(); //成功ステータス
        result.message = "処理が成功しました。";
        ResponseWriter.writeJSon(JSON.encode(result));
        return null;
    }
    
  • JSP(JavaScript)
    var ajax = KAIDEN.Ajax(); //Ajaxライブラリの呼び出し
    var criteria = {};        //サーバーに送信する値
    
    //Ajax実行(POST通信)
    ajax.postAuto("/*URL*/"
       , criteria
       , function(returnData) {
           //正常時の処理
         }
       , function(returnData) {
           //エラー時の処理
         }
       , function(returnData) {
           //ワーニング時の処理
         }
    );
    
    JSP側で、Ajax通信が終了すると次の様な処理を行います。
    1. メッセージが設定されている場合は、LogicResultDto.statusの内容に応じて自動的にメッセージを表示します。

      “success”の場合、imuiShowSuccessMessage()を利用して成功メッセージを表示
      “fail”の場合、imuiShowErrorMessage()を利用してエラーメッセージを表示
      “warn”の場合、imuiShowWarningMessage()を利用してワーニングメッセージを表示

    2. LogicResultDto.statusの内容に応じて、それぞれメソッドを呼び出します。
      この時、引数には LogicResultDto.dataで設定した値が渡されます。

    コラム

    ajax.postAuto()は、正常時・エラー時・ワーニング時の処理が不要で、サーバーに値を送信する必要がなければ、
    ajax.postAuto(“/*URL*/”); だけで実行できます。

    コラム

    GET通信を行う場合には、ajax.getAuto()で同様の処理が行えます。

3.3.4.2. Ajax通信の応用

同期通信やGET/POSTの切り替えなどのプログラミング方法は『intra-mart Accel Kaiden! JsDoc』のKAIDEN.base.foundation.Ajaxを参照してください。

メッセージ表示やその他の処理を細かく制御したい場合には、次のメソッドを使用してください。
(どちらのメソッドも$.ajax()を返却しますので、処理を細かく制御することができます。)
  • KAIDEN.base.foundation.Ajax#post ( String url, Object data, Function success ) : XMLHttpRequest
  • KAIDEN.base.foundation.Ajax#get ( String url, Object data, Function success ) : XMLHttpRequest