2014-05-12 46 views
0

相同的頁面我已經搜索了很多關於我的問題,我找不到任何相關的教程。而且,我甚至不確定是否可以使用客戶端技術。是否有可能重定向用戶登錄後使用客戶端技術

問題陳述:例如,我的網絡應用程序中有很多頁面,並且用戶從索引頁切換到頁面1,然後切換到頁面2.現在用戶決定登錄到我的網站。我想在登錄成功後將用戶重定向到第2頁。

當前結果:登錄成功後,用戶似乎總是被重定向到索引頁面。

期望的結果:一旦登錄成功,用戶應留2頁

上可以使用客戶端技術?在PHP中,我們可以使用會話和所有。但我僅限於使用客戶端技術來實現這一目標。

這裏是我的登錄功能

function loginPost(data) { 

    return $.ajax({ 

     url: "/some-api/login", 
     type: "POST", 
     dataType: "json", 
     contentType: 'application/x-www-form-urlencoded; charset=UTF-8', 
     async: true, 
     data:data 
    }); 
} 

P.S

function login(params) { 

    if(checkEmpty("loginEmail") && checkEmpty("password")) { 

     var emailField = $("#loginEmail").val(), 
      passwordField = $("#password").val(), 
      data = "login=" + emailField + "&password=" + passwordField; 

     for (var key in params) { 
      data += "&" + key + "=" + params[key]; 
     } 

     // Hide errors as default 
     $("#loginErrorWrapper").hide(); 

     // Try to launch the "normal" submit operation to make browser save email-field's value to cache 
     $('#loginSubmitHidden').click(); 

     // Send data to server and refresh the page if everything is ok 
     $.when(loginPost(data)).done(function(map) { 

      if(!hasErrors(map)) { 

       var lang = map.language; 
       if (lang != "") { 
        changeLanguage(lang) 
       } 
       else { 
        lang = 'en'; 
       } 

       redirect("/" + lang + "/"); 
      } else { 

       if (map.errorCode == "155") { 

        $.fancybox({ 
         href : '#termsAcceptancePopup', 
         title : '', 
         beforeLoad : function() { 
          $('#acceptTermsButton').attr('onclick','javascript:login({policyChecked:true});$.fancybox.close();'); 
         }, 
         helpers : { 
          overlay : { closeClick: false } 
         } 
        }); 

       } else { 

        var errorString = getErrorMessage(map); 
        $("#loginErrorWrapper").show(); 
        $("#loginErrorWrapper").html(errorString); 

       } 

      } 

     }); 
    } 
} 

Ajax請求 - >我不使用PHP的。我正在研究基於Java的Web應用程序。

+1

保存最後瀏覽的網址和登錄後重定向到該頁面。 https://developer.mozilla.org/en-US/docs/Web/API/Window.onbeforeunload – Ejaz

+1

這確實是應該坐在服務器上的東西;你可以在90%的時間內利用引用標題。 (只讀部分關於沒有PHP;您也可以使用[pushState](https://developer.mozilla.org/en-US/docs/Web/Guide/API/DOM/Manipulating_the_browser_history)跟蹤用戶的位置已經/正在進行) –

+1

使用'location.reload()'而不是'redirect(「/」+ lang +「/」)'來刷新當前頁面。 – pawel

回答

0

因此,我已經嘗試了評論部分中提出的所有方法,並且他們都工作。

1)使用location.reload()

一旦用戶登錄,它只是刷新頁面。

2)保存的最後一個URL在cookie

呼叫重定向前調用這個函數的。

createCookie(value1, value2, value3); 

function createCookie(name,value,days) { 
    if (days) { 
     var date = new Date(); 
     date.setTime(date.getTime()+(days*24*60*60*1000)); 
     var expires = "; expires="+date.toGMTString(); 
    } 
    else var expires = ""; 
    document.cookie = name+"="+value+expires+"; path=/"; 
} 

3)刪除重定向(「/」+ lang +「/」);從我的功能,因爲我使用ajax登錄。然而,這種方法並不實用,因爲一旦用戶登錄,他/她就不會知道一切是否正常,除非他/她手動刷新頁面或轉到其他頁面。

我不能肯定哪一種方法更好(性能和加載時間) - 在一個cookie的方法1或方法2

相關問題