2016-04-20 4 views
1

Я использую форму submit jquery на странице html. Данные успешно доставляются в мой бэкэнд-бейго (golang framework). После выполнения некоторых функций контроллер должен был решить, куда перенаправить следующее. Но это заблокировано jquery. Как я могу переопределить jquery и перенаправить с помощью кода go?Как перенаправить на другой шаблон из golang при использовании jquery form submit?

Мой сценарий

$().ready(function() { 
    $("#signupForm").validate({ 
     rules: { 
      fullname: "required"     
     }, 
     messages: { 
      fullname: "Please enter your full name" 
     }, 
     submitHandler: function(form){ 
      $(form).ajaxSubmit({ 
        url: '/add_user', 
        type: 'POST', 
        dataType: 'html', 
        data : $("#signupForm").serialize(), 
        success : function(data) { 

        } 
      }); 
      return false 
     } 
    }); 
}); 

Мой код

status := user.AddUserAndCompany(company) 
switch status { 
case true: 
    this.Data["Website"] = "beego.me" 
    this.Data["Email"] = "[email protected]" 
    this.TplName = "index.tpl" 
case false: 
    this.Data["ErrorMessage"] = "ServerConnectionError" 
    this.Layout = "layouts/header_logout.html" 
    this.TplName = "templates/registration.html" 
} 
+0

Что вы имеете в виду «было заблокирован jquery "? –

+0

Переадресация страницы теперь разрешается только через блок успеха ajax. Мне нужно перенаправить его из кода golang. –

+0

@ArjunAjith Вы решили эту проблему? Я застрял в той же проблеме, но не нашел ответа здесь. – ameykpatil

ответ

-1

Не можете перенаправлять на совершенно новый контроллер с c.Redirect (redirectURL, 302), где 'с' является контроллер?

Я в основном используют различные контроллеры для «/», «/ регистрация» и т.д.

+0

Это похоже на предложение/комментарий, а не на ответ. См. [Как написать хороший ответ] (http://stackoverflow.com/help/how-to-answer) – TravisEz13

0

То, что я в конечном итоге делает это не лучший способ. Но это решило мою проблему. Поэтому я делюсь этим. Я приветствую все предложения и любые другие решения этой проблемы.

switch dbStatus { 
    case 0://db Error 
     dataToClient = "Server Connection Error" 
     this.Ctx.ResponseWriter.Write([]byte(dataToClient)) //Error_msg_1 
    case 1://Email already in use 
     dataToClient = "EmailError" 
     this.Ctx.ResponseWriter.Write([]byte(dataToClient)) //Error_msg_2 
    case 2://UserName already in use 
     dataToClient = "UserNameError" 
     this.Ctx.ResponseWriter.Write([]byte(dataToClient)) //Error_msg_3 
    case 3://Everything is fine 
     if user.UserType == 0 { //Choosing the url 
      dataToClient = "/admin_home" //url_1 
      this.Ctx.ResponseWriter.Write([]byte(dataToClient)) 
     } else { 
      dataToClient = "/user_home" //url_2 
      this.Ctx.ResponseWriter.Write([]byte(dataToClient)) 
     } 
    } 

Мне не удалось найти способ перенаправления с внешнего сервера. Поэтому я закодированы, чтобы выбрать путь URL-адрес с фоновым и отправить его на передний конец с this.Ctx.ResponseWriter.Write([]byte(dataToClient))

Сейчас в переднем конце я сделал следующее:

$("#signupForm").validate({ 
      rules: { 
       fullName: "required" 
      }, 
      messages: { 
       fullName: "Please enter your full name" 
      }, 
      submitHandler: function(form){ 
       $(form).ajaxSubmit({ 
         url: '/add_user', 
         type: 'POST', 
         dataType: 'html', 
         data : $("#signupForm").serialize(), 
         success : function(data) { 
          //Checking whether the data from back-end is an url or not... 
          if (data.charAt(0) === '/'){ // if url 
           window.location.href = data; 
          }else{ //else error message 
           document.getElementById('regError').innerHTML = data; 
          } 

         } 
       }); 
       return false 
      } 
     }); 
    });