Ajaxフレームワーク ユーザーズガイド |
目次 索引 |
第3章 通信フレームワーク | > 3.4 サーブレット連携機能(汎用通信方式) |
ここでは、ビジネスロジックを実行して結果を受信するためのJavaScriptアプリケーションの作成方法について説明します。
リクエストの作成は、以下の手順で行います。
ビジネスロジックを実行するには、XMLHttpRequestクラスオブジェクトを生成し、onreadystatechangeプロパティなどの必要なプロパティを設定してリクエストを送信します。
リクエストの送信は、XMLHttpRequestオブジェクトクラスのsend関数を使用します。
Internet Explorer 6では、XMLHttpRequestクラスオブジェクトでなくActiveXObjectクラスオブジェクトを生成します。
var httpReq = new ActiveXObject("Msxml2.XMLHTTP"); |
onreadystatechangeプロパティに設定した関数で、レスポンスの受信完了を待ちます。
レスポンスからのオブジェクトの取得は、以下の手順で行います。
evalでオブジェクトに変換する前に、不当なコードが文字列に含まれていないことをチェックしてください。
JSON形式とそのチェック方法については、RFC 4627を参照してください。
以下に、JavaScriptアプリケーションの記述例を示します。
/* イベント処理 */ function onClicked() { try { // リクエストの作成 var obj = new Object(); obj.key = ...; var str = RcfObjectConverter.encode(obj); str = encodeURIComponent(str); var param = 'obj=' + str + '&command=init'; // XMLHttpRequestの生成 var httpReq = new XMLHttpRequest(); // コールバックの設定 httpReq.onreadystatechange = function(res) { if ((httpReq.readyState == 4) && (httpReq.status == 200)) { obj = receive(httpReq.responseText); // 受信したオブジェクトの処理 ...; } } // ビジネスロジックの実行 httpReq.open('post', url, true); httpReq.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8'); httpReq.send(param); } catch (e) { // エラー処理 ...; } } /* レスポンス受信 */ function receive(res) { // レスポンスからオブジェクト取得 var obj = !(/[^,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]/.test( res.replace(/"(\\.|[^"\\])*"/g, ''))) && eval('(' + res + ')'); if (!obj) { // エラー処理 ...; return null; } return obj; } |
ビジネスロジックの実行で使用するJavaScript用の関数を以下に説明します。
JavaScriptアプリケーションの送信データであるオブジェクトを文字列に変換する関数です。
オブジェクトは、Ajaxフレームワークが規定する独自形式で文字列に変換されますが、アプリケーションがこの形式を意識する必要はありません。変換した文字列は、ビジネスロジックの処理で、com.fujitsu.interstage.rcf.converter.RcfBeanConverterクラスのdecodeメソッドでJavaBeanに変換できます。
以下に、RcfObjectConverter.encode関数の記述形式を示します。
RcfObjectConverter.encode(dataObj); |
RcfObjectConverter.encode関数が通知する例外については、“通信フレームワーク(JavaScript)に関するメッセージ”を参照してください。
目次 索引 |