Мое приложение находится за входом в систему, поэтому при загрузке данных через 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
(увидеть документы а также 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
(доктор)
"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');
Других решений пока нет …