エンタープライズ:特集 2003/07/01 15:46:00 更新

JAVA Developer 2003年8月号より転載
FlashとTomcatで実現する使いたくなるWebアプリ (6/10)

(3)サーバーとの通信(リスト6)

 すべての入力が行われたあと、sendResultでサーバーに結果を送信します。

 XMLオブジェクトに対する操作は、JAXPのDocumentを使用したJavaの場合と基本的に変わりありません。XML文書を送信するメソッドは、sendとsendAndLoadの2つがあります。前者は送信後、サーバーからブラウザで表示するためのHTMLが返されることを前提としているため、ここではXMLが返信されるsendAndLoadを使用しました。loadと同様、sendAndLoadでもロード後の処理はコールバック関数(onResultResponse)で行います。今回は、通信が成功したら「ありがとうございました」と表示するフレームに遷移させています。

 sendAndLoadを呼び出す前のコールバック関数の設定は、レスポンスを受け取るXMLオブジェクトインスタンスに対して行うことに注意してください。しっかり考えれば当たり前のことですが、送信するXMLオブジェクトインスタンスにコールバック関数を設定しても呼び出されることはありません。

リスト6 サーバーとの通信(フレームスクリプト内)
function sendResult(){
    var result_xml = new XML();
    var root_xml = result_xml.createElement ("root");
    result_xml.appendChild(root_xml);
    for (var i = 0; i < result.length; i++)
    {
        trace ("result " + i + "  : " + result[i].id);
        var result_node = result_xml.createElement ("result");
        var qid_node = result_xml.createElement (
            "questionnaire-id");
        qid_node.appendChild (
            result_xml.createTextNode (result[i].qid));
        result_node.appendChild (qid_node);
        var value_node = result_xml.createElement ("value");
        value_node.appendChild (
            result_xml.createTextNode (result[i].value));
        result_node.appendChild (value_node);
        root_xml.appendChild (result_node);
    }
    trace (result_xml.toString());
    result_xml.contentType = "text/xml; charset=shift_jis";
    result_response = new XML();
    result_response.onLoad = onResultResponse;
//    result_xml.sendAndLoad(
//        "http://localhost/questionnaire/save",result_response);
    result_xml.sendAndLoad("save",result_response);
}
function onResultResponse (success)
{
    if (success)
    {
        trace ("success");
        _root.gotoAndStop ("end_page");
    }
    else
    {
        trace ("failed");
        _root.gotoAndStop ("error_page");
    }
}

前のページ | 1 2 3 4 5 6 7 8 9 10 | 次のページ

[佐藤 毅,JAVA Developer]

Copyright © ITmedia, Inc. All Rights Reserved.