其他分享
首页 > 其他分享> > 用jQuery DataTable通过ajax加载数据时处理会话超时

用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’);

标签:jquery-datatables,datatables-1-10,php,jquery
来源: https://codeday.me/bug/20191120/2046033.html