【发布时间】:2015-02-18 22:39:18
【问题描述】:
我的应用程序在登录之后,所以当通过 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;
}
}
【问题讨论】:
-
嘿@justanotherprogrammer,已经删除了我的答案-无论如何它应该是一个评论,在我看来实际上有“答案”状态并不是很好:)但是如果你的回复真的是
json_encode(array('TIMEOUT'))那么if (myJson[0] == "TIMEOUT")将是正确答案。 -
我想知道是否只是 DataTables 中的
data选项导致它不起作用?也许在任何其他情况下它都会起作用,我只是不知道。感谢您的宝贵时间! -
只是一个想法 - 尝试在 ajax 调用中设置
dataType : 'json'... -
好主意,但是,恐怕没有任何区别。使用
dataSrc而不是data仍然是我让它工作的唯一方法。
标签: php jquery jquery-datatables datatables-1.10