使用 jquery DataTables 通过 ajax 加载数据时处理会话超时
Handle session timeout when loading data through ajax with jquery DataTables
我的应用程序需要登录,因此在通过 ajax 加载数据时,我需要验证用户是否仍有活动会话。如果用户没有活动会话,我 return 返回 echo json_encode(array('TIMEOUT'));
,输出 ["TIMEOUT"]
。我如何阅读该响应并将用户送回登录页面?
在以前版本的 DataTables 中,我可以执行以下操作:
"fnServerData": function ( sSource, aoData, fnCallback, result ) {
$.getJSON( sSource, aoData, function (json) {
if(json == "TIMEOUT")
{
window.top.location.href = "/sign_out?action=to";
return;
}
fnCallback(json)
} );
在 DataTables 1.10 中,fnServerData
已被 ajax
取代(参见 docs and ajax.data)。我如何使用新的 DataTables 版本完成同样的事情?我觉得我很接近,但它只是行不通......可能是因为我在尝试解析响应时做错了(我从来没有在 if 语句中点击)。
"ajax": {
"url": "/account/location_load",
"data": function (myJson) {
if(myJson == "TIMEOUT")
{
window.top.location.href = "/sign_out?action=to";
return;
}
return myJson;
}
}
经过一天半的努力,我终于找到了一个使用 ajax.dataSrc
(doc)
的可行解决方案
"ajax": {
"url": "/account/location_load",
"dataSrc": function (myJson) {
if(myJson == "TIMEOUT")
{
window.top.location.href = "/sign_out?action=to";
return "";
}
return myJson.data;
}
我不知道为什么这个版本允许我读取 myJson 而另一个版本不允许,但它有效。工作 PHP 代码最终是 echo json_encode('TIMEOUT');
我的应用程序需要登录,因此在通过 ajax 加载数据时,我需要验证用户是否仍有活动会话。如果用户没有活动会话,我 return 返回 echo json_encode(array('TIMEOUT'));
,输出 ["TIMEOUT"]
。我如何阅读该响应并将用户送回登录页面?
在以前版本的 DataTables 中,我可以执行以下操作:
"fnServerData": function ( sSource, aoData, fnCallback, result ) {
$.getJSON( sSource, aoData, function (json) {
if(json == "TIMEOUT")
{
window.top.location.href = "/sign_out?action=to";
return;
}
fnCallback(json)
} );
在 DataTables 1.10 中,fnServerData
已被 ajax
取代(参见 docs and ajax.data)。我如何使用新的 DataTables 版本完成同样的事情?我觉得我很接近,但它只是行不通......可能是因为我在尝试解析响应时做错了(我从来没有在 if 语句中点击)。
"ajax": {
"url": "/account/location_load",
"data": function (myJson) {
if(myJson == "TIMEOUT")
{
window.top.location.href = "/sign_out?action=to";
return;
}
return myJson;
}
}
经过一天半的努力,我终于找到了一个使用 ajax.dataSrc
(doc)
"ajax": {
"url": "/account/location_load",
"dataSrc": function (myJson) {
if(myJson == "TIMEOUT")
{
window.top.location.href = "/sign_out?action=to";
return "";
}
return myJson.data;
}
我不知道为什么这个版本允许我读取 myJson 而另一个版本不允许,但它有效。工作 PHP 代码最终是 echo json_encode('TIMEOUT');