2011-03-31 23 views
1

私はgrailsを初めて使用しています。次の問題があります。ajaxコールから1つのコントローラアクションから別のコントローラアクションへのリダイレクト

私はコントローラ1でajax呼び出しでaction1を呼び出しています。 コントローラ2にあるaction2にリダイレクトしたいのですが。

以下に指定されています...しかし、動作していないようです。私を助けてください!

class controller1 { 
    def action1 = { 
     redirect(controller:'controller',action:'action2') 
    } 
}  

class controller2{ 
    action2{ 

    } 
} 
+0

これは簡単な例ですが、私は確信しています:action2はdef action2 = {...}でなければなりません、そうですか?コントローラの名前はUserControllerのようにする必要があります。 –

答えて

0

redirect()の代わりにrender()を使用できます。

1

あなたが例えば、あなたのAJAX呼び出しバック関数を使用してリダイレクトを実行する必要があります。 あなたcontroller1のアクション1で

$.ajax({ 
     type: "POST", 
     url: "${createLink(controller:'controller1',action:'action1')}", 
      data: "dataToSend="somedata, 
      success: function(data){//data is the message rendered from action1 
       window.location = ${createLink(controller:'controller2',action:'action2')} 
      }, 
      error: function(){ 
       alert("Error from controller 1 action 1"); 
      } 
     }); 

例えばjQueryのを使用している場合、あなたが戻ってAjaxのイベントにレンダリングする必要があります。

class controller1 { 
    def action1 = { 
     ........ 
     some code/logic 
     ........ 
     def message = "some message, success! or error!" 
     render(text:message, type:,contentType:'text/xml') 
    } 
} 
4

あなたは、コントローラの属性の正しいコントローラ名を与える必要が

redirect(controller:'controller2',action:'action2') 
関連する問題