基本的なカスタマイズ > ユーザーインタフェースのカスタマイズ > Windchill JSP フレームワークを使用した HTML クライアントのカスタマイズ > JSP ページの一般的な要素のカスタマイズ > Ajax による UI のカスタマイズ > ソリューション > Windchill における Ajax 呼び出しの実行
  
Windchill における Ajax 呼び出しの実行
先述した方法ではニーズを満たせない場合は、独自の Ajax リクエストをサーバーに送ってデータを得ることができます。
要素
タイプ
説明
requestHandler.doRequest
Javscript
Ajax リクエストを実行するメソッドを持った JavaScript クラス
getElementHtml
JavaScript
ページの一部を更新できる JavaScript 関数。requestHandler を使ってサーバーから新しい HTML を取得します。
手順 - Ajax 呼び出しの実行
Windchill で Ajax 呼び出しを実行するには、requestHandler.doRequest() JavaScript メソッドを使用します。このメソッドに、サーバーの呼び出し URL と、必要に応じてその他のオプションパラメータを指定します。返ってくる応答は JavaScript の XMLHttpRequest オブジェクトです。
次に示す例は、Windchill でこのメソッドを使って、オブジェクト作成ウィザードのオブジェクトタイプピッカーでユーザーが値を変更したときに、itemTypeInstanceId と呼ばれる DOM の非表示フィールドをリセットする方法を示しています。
<script>
.
.
.
var params = ‘pickerVal=’ + elementVal; // elementVal is the new value of the type picker
var options = {
asynchronous: false,
parameters: params
};
var url = “netmarkets/jsp/components/resetItemTypeInstanceId.jsp”;
var response = requestHandler.doRequest(url, options);
var newTypeInstanceId = response.responseText;
element = document.getElementById(currentObjectHandle +
“itemTypeInstanceId”);
element.value = newTypeInstanceId;
.
.
.
</script>
この場合、pickerVal パラメータがリクエストパラメータで JSP に渡されます。JSP はサーバーメソッドを呼び出して、オブジェクトの新しい TypeInstanceIdentifier を計算し、それを応答として返します。
<%
String pickerChoice = request.getParameter("pickerVal");
String typeInstanceIdentifier =
createBean.getNewTypeInstanceIdStringForNewItem(pickerChoice);
out.clearBuffer();
out.write(tiid);
out.flush();
%>
デフォルトで、doRequest() は非同期リクエストを実行するため、応答を待つ間、ページの処理がブロックされることはありません。同期リクエストにするには、先に示したように、メソッドに渡すオプションで asynchronous を false に設定する必要があります。
リクエストを非同期にする場合は、doRequest() が成功して応答を返すときに呼び出す JavaScript 関数をオプションパラメータで指定する必要があります。次に例を示します。
var options={
asynchronous: true,
parameters: 'oid=' + oid,
onSuccess: function(response) {
var response = response.responseText;
var json = response.evalJSON();
var locationValue = json.locationValue;
var folderOid = json.folderOid;
setFolder(window, locationValue, folderOid);
}
};
この例では、呼び出された JSP は、JSON オブジェクトを応答に書き込む Java タグを呼び出します。
<req:getFolderAndContactByOidTag oidString="${param.oid}" />
onSuccess 関数をインラインで定義する代わりに、次のように呼び出す関数の名前をたんに指定することもできます。
onSuccess: handleResponse,
onSuccess コールバックに加えて、オプションとして onFailure コールバック関数を指定することもできます。onFailure コールバックを指定しない場合は、JavaScript コンソールにエラー応答が記録されます。