Перенаправление с одного действия контроллера на другое действие контроллера из вызова ajax - PullRequest
1 голос
/ 31 марта 2011

Я новичок в Grails и застрял со следующей проблемой.

Я вызываю action1 в controller1 через ajax-вызов.Теперь, хотя я хочу перенаправить на action2, который находится в controller2.

, как указано ниже ... Но, похоже, это не сработает. Пожалуйста, помогите мне !!

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

class controller2{  
  action2{

  }
}

Ответы [ 3 ]

4 голосов
/ 10 января 2012

Вам необходимо дать правильное имя контроллера для атрибута контроллера

redirect(controller:'controller2',action:'action2')
1 голос
/ 01 апреля 2011

вам нужно выполнить перенаправление через функцию обратного вызова 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')
   }
}
0 голосов
/ 31 марта 2011

Вы можете использовать render() вместо redirect().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...