从ajax调用从一个控制器操作重定向到另一个控制器操作

时间:2011-03-31 10:20:47

标签: grails

我是Grails的新手,我遇到了以下问题。

我通过ajax调用在controller1中调用action1。 现在虽然我想重定向到controller2中的action2。

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

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

class controller2{  
  action2{

  }
}

3 个答案:

答案 0 :(得分:4)

您需要为控制器属性

指定正确的控制器名称
redirect(controller:'controller2',action:'action2')

答案 1 :(得分:1)

你需要通过你的ajax回调函数进行重定向,例如: 如果你使用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");
           }
      });

在你的controller1 action1中,你需要渲染回ajax事件:

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

答案 2 :(得分:0)

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