我的应用程序处于登录状态,因此在通过ajax加载数据时,我需要验证用户是否仍处于活动状态.如果用户没有活动的会话,则返回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和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’);