JQuery DataTables - 捕获'ajax'响应

时间:2016-03-23 09:42:55

标签: php jquery json ajax datatables

我有一个使用JQuery DataTables的Web应用程序。它使用ajax参数来请求并将JSON数据插入表中。

但是,在请求的.php文件的顶部,检查用户是否已登录。如果此检查失败,则回显JSON通知。

<?php
    session_start();
    if (!isset($_SESSION['logged']) || $_SESSION['logged'] !== true) {
        $array = array(utf8_encode('logged')=>utf8_encode('false'));
        echo json_encode($array);
        exit;
    }
?>
table = $('#active-issues').DataTable({
        "scrollY": pixels,
        "dom": '<"top"if>rt<"bottom"><"clear">',
        "paging": false,
        "responsive":true,
        "bProcessing": true,
        "ajax": {
            "data": function(){
                $('#active-issues').DataTable().ajax.url(
                    "php/get_issues.php"
                    + "?id=" + id
                    + "&customer_id=" + customerid
                );
            }
        },
        columns: [
            { responsivePriority: 1 },
            { responsivePriority: 2 },
            { responsivePriority: 4 },
            { responsivePriority: 3 },
            { responsivePriority: 5 },
            { responsivePriority: 6 },
            { responsivePriority: 7 }
        ],
        "columnDefs": [
            { "type": "alt-string", targets: 5},
            { "type": "alt-string", targets: 6},
        ]
    });
table.ajax.reload(null, false);

是否可以捕获给予JQuery DataTables的响应?这样我就可以检查结果是否为{ logged: "false" }并采取相应的行动?

2 个答案:

答案 0 :(得分:1)

花了一段时间,并帮助&#39; allan&#39;来自datatables论坛。但问题终于解决了。

通过dataSrc可以在表格中打印之前操纵ajax结果,然而,我用它来检查结果是否包含logged以及它是否等于false如果确实如此,则采取相应行动:

"ajax": {
    "data": function(){
        $('#active-issues').DataTable().ajax.url(
            "php/get_issues.php?id=" + id + "&customer_id=" + customerid
        );
    },
    "dataSrc": function ( json ) {
        if(typeof json['logged'] != "undefined") {
            if (json['logged'] == 'false') {
                location.replace('php/logout.php');
            }
        }
        return json.aaData;
    }
},

答案 1 :(得分:0)

是的,如果您在外部执行ajax cal,即执行独立的ajax请求以获取响应并确定响应是否包含,则可以执行此操作 {logged:&#34; false&#34;并相应地将数据填充到数据表中。