【发布时间】:2014-03-11 06:12:30
【问题描述】:
我有一个 ColdFusion 页面,用户可以打开一个模式并查看有关一行数据的更多信息。但是,如果用户在页面上停留的时间超过默认的 20 分钟会话超时,则会引发错误,因为它正在查找会话变量但找不到它们。我了解如何使用服务器端代码来捕获此问题,但我似乎无法让 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 中的函数:
<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>
我在想,当我询问 CFC 会话是否存在时,它仍然具有会话变量,因为页面在 20 多分钟内没有刷新。所以......想知道我将如何向 CFC 发送 AJAX 请求并在 CFC 中具有重新评估会话变量的功能。任何帮助将不胜感激!
【问题讨论】:
标签: jquery ajax session coldfusion