以下のような相談がありました。画面上に入力した文字を、ボタンをクリックしてファイルに落としたい、とのことです。
ダウンロード処理はAjaxコールバックとして実装します。PL/SQLコードは以下になります。
このAjaxコールバックをボタンDOWNLOADから呼び出します。
ここで、ページ・アイテム(この例ではP1_TEXT)の値をAjaxコールバックに渡すために、apex.server.processを使うとエラーが発生します。
これはapex.server.processは、JSONが返されることを期待しているためです。ファイルのダウンロードを行う場合、応答はAjaxの呼び出し元ではなく、ブラウザへ戻す必要があります。
よって、ボタンDOWNLOADのターゲットのタイプをこのアプリケーションのページ、ページを&APP_PAGE_ID.とし、リクエストにAPPLICATION_PROCESS=DOWNLOADを指定する形で、Ajaxコールバックを呼び出します。
この状況を回避するため、ページ・アイテムP1_TEXTに、値が変更されたらサーバーに送信して保存する動的アクションを作成しておきます。
値が変更されたときに、サーバー側のコードを実行します。実際にはページ・アイテムの値が送信されていれば良いので、送信するアイテムにP1_TEXTを指定し、コードはnull;とします。
以上が、ファイルをダウンロードするAjaxコールバックを呼び出す際の注意点でした。
Oracle APEXのアプリケーション作成の参考になれば幸いです。
完