微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

用jQuery DataTable通过ajax加载数据时处理会话超时

我的应用程序处于登录状态,因此在通过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取代(请参见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;
          }
      }

解决方法:

经过一天半的工作,我终于找到了使用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’);

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐