使用 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');