0

講師が選択ボックスで選択されたときに、(セッションから) 講師を一覧表示する選択ボックスを使用variable:session.eligibleInstructor.FULLNAMEして、選択した講師の電子メール アドレス (電子メールは同じセッション変数でも使用できます: session.eligibleInstructor.EMAIL) でテキスト フィールドを更新します。私のJavaScriptが選択したインストラクターをキャプチャしていることを知っています(「アラート」を行ったため):

$('#inst2Select').change(function(event){
  $('#emailInst2').load('/edu.wit.nonac/nonAcadCourse/create/updateSelect',
    {
      selectedInst: $(event.target).val()
    },
    function() {alert($(event.target).val())
}

しかし、私のコントローラーアクション (updateSelect) は何もしていません:

def updateSelect = {
        //nonacCourseConsole3.url.root = "/edu.wit.nonac" + "/";
        println("UpdateSelect reached")
        def ctx = startAsync()

        ctx.start{
        println("Params: "  + params.any())
        def selectedInstEmail = dbConnection.firstRow("select EMAIL from  zV_eligibleInstructors where FIRSTNAME=?", [params.selectedInst])
        println(selectedInstEmail)
        render selectedInstEmail

        }


    }

「onchange」イベントのremoteFunctionでさえ、複数のajaxタイプのコールバックを試しました。選択したインストラクターの電子メールを取得するためにデータベースに戻る必要はないと認識しています。これは、セッション変数で既に利用できるためです。私は答えを得るために何百ものウェブページを見てきましたが、この正確な問題にまったく触れていないようです. コントローラーのアクションを起動できたとしても、それは大きな前進です。何が間違っているかについて誰か提案がありますか?

4

1 に答える 1

0

講師のフルネームとメールアドレスを含む Javascript オブジェクト構造をビューに生成させることができます。コントローラーで、インストラクターのフル ネームをメール アドレスにマップするインストラクター マップを作成できます。次に、あなたの見解では、次のようなものを持つことができます

<script type="text/javascript">
  var instructors = {
    <g:each in="${instructorMap}" var="mapEntry">
      "${mapEntry.key}": "${mapEntry.value}",
    </g:each>
  }
</script>

次に、変更イベント ハンドラーで、instructors 変数から値を取得できます。

これは、完全な名前が一意であることを保証できる場合にのみ機能します。そうでない場合は、instructorNames (id をフルネームにマッピング) とinstructorEmails (id を電子メールにマッピング) のような 2 つの変数をセットアップできます。

于 2013-01-25T21:43:53.200 に答える