我有一個ColdFusion頁面,用戶可以打開模式並查看有關一行數據的更多信息。但是,如果用戶坐在頁面上的時間超過默認的20分鐘會話超時時間,則會發出錯誤,因爲它正在查找會話變量並找不到它們。我理解如何用服務器端代碼來捕獲這個問題,但我似乎無法獲得AJAX調用來成功確定會話是否仍然存在。使用AJAX時檢查會話超時
這裏是AJAX代碼,當用戶點擊按鈕打開模式時觸發。基本上它是檢查會話是否與CFC中的函數存在。我的問題是,它總是返回'有效'。
//this checks if the session is expired
function checkSessionExists() {
$.ajax({
//this is the that has function
url: 'components/Admin.cfc',
//POST method is used
type: "POST",
//pass the data
data: {
method: "checkSessionExists"
},
async: false,
success: function(response) {
//$('#loading').hide();
var obj = $.trim(response);
if (obj == 'expired') { //it's never expired
alert('Sorry, your session has expired.')
window.location.href = "logout.cfm";
return false;
}
else{
}
},
error: function(jqXHR, exception) {
alert('Uncaught Error.\n' + jqXHR.responseText);
}
});
return false;
}
這裏是在CFC功能:我在想,當我問CFC會話是否存在,它仍然有會話變量,因爲頁面沒有刷新
<cffunction name="checkSessionExists" access="remote" output="false" returntype="string" returnformat="plain" hint="I check if session is expired.">
<cfif NOT structKeyExists(session, "alive")>
<cfreturn "expired" />
<cfelse>
<cfreturn "valid" />
</cfif>
</cffunction>
在二十分鐘內。所以...想知道如何將一個AJAX請求發送給CFC並在CFC中有一個函數重新評估會話變量。任何幫助,將不勝感激謝謝!
+1你打我10秒;)(我將刪除我的答案,因爲我們基本上是說同樣的事情) –
hehe對不起。如果它不適用於Chrome StackTrack插件,我將無法及時回答任何問題 – barnyr
我必須做類似的事情。我使用了一個像素iframe,對用戶不可見。 Inside是一個帶有元刷新標籤的Coldfusion頁面。請注意,這種方法意味着用戶無需在瀏覽器上執行任何操作。這是故意的。這可能不適合你的情況,但它適用於我的情況。 –