2014-02-17 80 views
0

我使用jQuery實現一個簡單的移動網絡應用的移動版1.4(我使用單頁模式 - 第1頁第2頁和一個HTML文件中)jQuery Mobile的1.4.0客戶端會話處理

下面的代碼是什麼我已經嘗試過。請幫我解決這個問題。

問題,

  1. 如何限制第2頁的直接訪問。 http://localhost:8080/myApp/#Page2

  2. 這是從客戶端處理會話的正確設計嗎?

  3. 在瀏覽器窗口中直接點擊url。我看到page2出現然後消失,最後出現page1。如果會話ID不在sessionStorage對象中,我想直接顯示page1。

我在做什麼錯?請糾正我。

my.js文件

$(document).on('pagebeforecreate','#page2', function(event) { 
    var SessionID = sessionStorage.getItem("SessionID"); 
    if(SessionID) { 
     $.mobile.pageContainer.pagecontainer('change', "#page2"); 
    }else { 
     $.mobile.pageContainer.pagecontainer('change', "#page1"); 
    } 

}); 
$(document).on("pageinit","#page1",function() { 
$.ajax({ 
      url : "/myApp/rest/fetchJson", 
      type : "POST", 
      dataType : "json", 
      data : formData, 
      contentType : "application/json", 
      cache : false, 
      success : function(data) { 
        sessionStorage.setItem("SessionID", data.SessionID); 
        $.mobile.pageContainer.pagecontainer('change', "#page2", { 
        transition: 'none' 
       }); 
      } 
     }); //Ajax ends 
}); //page init ends 

感謝,

阿樹

回答

0

嘗試創建一個方法JavaScript來驗證,如果會話使用Ajax請求存在:在

var sessionExist: function() { 

     return $.ajax({ 
      url: 'checksession_file_onserver', 
      data : params, 
      type: 'get', 
      dataType: 'json' 
     }) 
} 

文件服務器:

if(session_exist){ 
    return true; 
}else { 
    return false; 
} 

頁限制直接訪問:

var sessionStatus = sessionExist(); 
if(sessionStatus === false) { 
    redirect to page ->> example location.hash = 'your page'  
} 
+0

@Cesar ......這樣的想法是sessionExist()函數將在我的腳本第一個Ajax調用找到,如果用戶在會話如果是這樣,呈現請求的頁面。這看起來乾淨而簡單。非常感謝你的指導,它幫助了我很多。 – Ashu

+0

你很好! ;) –