3

我的应用程序在登录之后,所以当通过 ajax 加载数据时,我需要验证用户仍然有一个活动会话。如果用户没有活动会话,我会返回echo json_encode(array('TIMEOUT'));which outputs ["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(参见docsajax.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;
          }
      }
4

1 回答 1

4

经过一天半的努力,我终于找到了一个使用ajax.dataSrcdoc)的工作解决方案

"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');

于 2015-02-19T15:18:56.677 回答