我並不擅長ajax,所以我很難找到更好的答案。我已經嘗試創建單獨的「.js」文件,其中包含對其他服務的調用(用於驗證用戶會話),但它不起作用。如何在顯示mvc視圖之前「預處理」ajax調用?
我的目標是在加載視圖之前驗證用戶會話(在MVC中)。使用驗證給定會話與數據庫的邏輯的唯一方法是使用ajax通過url調用休息服務。
此代碼工作得很好(內部主頁查看):
<script type="text/javascript">
$(function() {
$.get('@Url.Action("GetSession", "Auth")', function (getdata) {
if (getdata.UserID && getdata.SessionID && getdata.SourceIP) {
$.post('http://website.com/Rest/Authenticate/ValidateUserSession', JSON.stringify(getdata), function (response) {
if (response == false) { window.location.replace('@Url.Action("SignUp", "Auth")'); }
});
} else {
window.location.replace('@Url.Action("SignUp", "Auth")');
}
});
});
</script>
<h2>
Home</h2>
@*The content here should not appear, unless session is validated.*@
唯一的問題是,驗證的過程需要3〜5秒,所以用戶看到的主頁Ajax調用返回前結果驗證是否成功。如果驗證/響應返回false
它將重定向到sigup頁面。
我不知道這個過程的最佳做法是什麼。現在我只是不希望主視圖顯示給用戶,除非會話被驗證。希望我能解釋清楚。如果你有更好的想法,請提出建議。
附加信息:
如果可能的話,我喜歡這樣做:
<script type="text/javascript">
if(!validated()){
window.location.replace('@Url.Action("SignUp", "Auth")');
}
</script>
<h2>
Home</h2>
@*The content here should not appear, unless session is validated.*@
這是一個很好的文章,但我要保持服務的調用而無需刷新頁面。我會嘗試這種局部視圖。謝謝! – fiberOptics 2012-04-17 06:01:44