2012-04-11 112 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 2012-04-11 20:52:10

回答

0

你不能在if塊簡單地重定向像

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

但我希望用戶登錄到他各自的子域名,重定向不會發送發佈數據 – Palantir 2012-04-11 21:14:46

+1

@Palantir,但一旦你有一個正確的子域名基於電子郵件,它應該意味着用戶已經登錄,對吧?爲什麼他們必須登錄兩次? – 2012-04-12 06:28:59

+0

它不會登錄兩次,這正是重點,驗證是要確定它應該登錄的位置。 – Palantir 2012-04-12 12:40:51

0

我搞清楚,這要歸功於我的一個朋友。問題是子域中的登錄,它與一個302個狀態響應,並在jQuery的阿賈克斯成功預計只有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); 
        } 
       } 
      }) 
     })