2012-02-29 8 views
1

私はこのようなコントローラのコードを持っている:GrailsコントローラでHTML/JavaScriptをレンダリングする方法は?

def test23() { 
     //params.id23 is been passed via ajax calls 
     def find = User.findByUsernameLike("${params.id23}") 
     println find 
     render """<script type="text/javascript"> alert("hi"); </script>""" 
    } 

このコードはjQueryのajaxメソッドを使用して呼ばれています。さて、それはうまく動作します。つまり、出力がコンソールに表示されますが、renderの部分が機能していません(私はalertを取得していません)。

私が行ったことは正しいですか?スクリプトをレンダリングするために何か他のものを渡す必要がありますか?

+6

*身震い* ...ビューコード - より有用コメントとして、あなたが本当に考慮すべきである:

render text: """<script type="text/javascript"> alert("hi"); </script>""", contentType: 'js' 

または可能性をコントローラーでこれを行わず、ビューに移動させます。そこで、AJAXは値を要求し、 'hi'を含むJsonオブジェクトを受け取り、 'alert'か何かを呼び出します。またはJavaScriptのテンプレートフレームワークを見て...それは本当にあなたが達成しようとしているかどうかに依存します... –

+0

@tim_yates:私はちょうどそれが動作しているかどうか知りたいですが、私のコードに入れません。しかしレンダリングは私に警報を表示する必要がありますが、それはここで尋ねられる理由ではありません:) –

+0

@tim_yates:そのアドバイスありがとう。ユーザーがドロップダウンリストボックスから値を選択した後に、DOMにいくつかのデータを追加する必要があります(つまり、ユーザーがそれを見ることができるように、いくつかの 'id'要素に)。) –

答えて

4

この代わりに試してみてください;-)コントローラに

render text: """<script type="text/javascript"> alert("hi"); </script>""", 
     contentType: 'text/javascript' 
+0

これが動作します。ありがとう –

+2

私はこれでティムと午前、スクリプトタグを返す非常にMVCishではありません。あなたは間違いなくJSONまたはHTMLフラグメントをテンプレートから返すべきです。 – dbrin

関連する問題