2012-04-11 3 views
1

Сначала я попытаюсь объяснить, что я хочу сделать:
У меня есть система, которая создает динамически субдомены, и каждая из них имеет свою собственную базу данных и набор правил. На моей главной странице у меня есть форма входа в систему, которая должна использоваться для доступа к правильному субдомену на основе данного сообщения. Это хорошо, но мне нужно следующее: после проверки, который является правильным субдоменом, как скрипт должен изменить действие формы для входа и перенаправления на данный субдомен?
Изменение действия при отправке формы

Мой код сценария выглядит так:

function myJson(url, postData) { 
     Jsondata = $.ajax({ 
      url : url, 
      data : postData, 
      type : 'post', 
      dataType : 'json', 
      async : false 
     }).responseText; 
     return jQuery.parseJSON(Jsondata); 
    } 
    $(function() { 
     function beforeRequest(formData, jqForm) { 
      var url = jqForm.attr('action'); 
      var data = jqForm.serialize(); 
      var jsonData = myJson(url, data); 
      if (jsonData.success == true) { 
       jqForm.attr('action',jsonData.loginUrl); 
      } else { 
       $("#login-form > .error-tooltip").find('span').empty().text(jsonData.msg).end().fadeIn(300); 
       return false; 
      } 
      return true; 
     } 
     $("#login-form").submit(function() { 
      $(this).ajaxSubmit({ 
       beforeSubmit : beforeRequest 
      }); 
      return false; 
     }) 
    }) 

Если есть способ сделать это без плагинов ajaxForm (без плагинов вообще) был бы очень благодарен. Этот скрипт, который я сделал, делает проверку, изменяет действие формы, но не перенаправляет.
Что мне не хватает?

+0

можно перенаправить с помощью window.location? – Evan

ответ

0

вы не можете просто перенаправить в if блоке как

if (jsonData.success == true) { 
location.href='your sub domain to redirect to'; 
+0

, но я хочу, чтобы пользователь заходил в свой соответствующий поддомен, перенаправляя не отправлять данные сообщения – Palantir

+1

@Palantir, но как только вы получили правильный субдомен по электронной почте, это должно означать, что пользователь уже вошел в систему, верно? зачем им приходиться регистрироваться дважды? –

+0

Это не логин в два раза, это точно так же, валидация предназначена для того, чтобы определить, где он должен войти. – Palantir

0

Я полагаю, что это, благодаря моему другу. Проблема была Войти в подобласти, он отвечает 302 состояния, и успех на Jquery AJAX ожидает только статус 200, это код, который работает:

$("#login-form").submit(function(e) { 
      e.preventDefault(); 
      var url = $(this).attr("action"); 
      var data = $(this).serialize(); 
      $.ajax({ 
       url : url, 
       data : data, 
       type : 'post', 
       dataType : 'json', 
       beforeSend : function() { 
        $("#login-form > .error-tooltip").fadeOut(300); 
       }, 
       success:function(jsonData){ 
        if(jsonData.sucsess == true){ 
         $.ajax({ 
          url: jsonData.loginSite, 
          data:data, 
          type:'post', 
          complete:function(){ 
           window.location = jsonData.site;  
          } 
         }) 
        }else{ 
         $("#login-form > .error-tooltip").find('span').empty().text(jsonData.msg).end().fadeIn(300); 
        } 
       } 
      }) 
     })