我有一个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页面。请注意,这种方法意味着用户无需在浏览器上执行任何操作。这是故意的。这可能不适合你的情况,但它适用于我的情况。 –