2011-03-31 94 views
1

我是grails的新手,但遇到以下问题。从ajax调用从一个控制器动作重定向到另一个控制器动作

我正在通过ajax调用在controller1中调用action1。 现在尽管它我想重定向到controller2中的action2。

如下所示...但它似乎并不工作请帮助我!

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

class controller2{ 
    action2{ 

    } 
} 
+0

这似乎是一个简单的例子,但我想确定:action2应该是def action2 = {...},对吧?控制器的名称应该像UserController。 – 2011-04-01 03:28:08

回答

0

可以使用render()代替redirect()

1

你需要通过你的Ajax回调函数,例如做重定向: 如果你在你的控制器1动作1使用JQuery例如

$.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"); 
      } 
     }); 

,你需要渲染回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') 
相关问题