代码之家  ›  专栏  ›  技术社区  ›  LucyTurtle

手风琴表+日期范围选择器+AJAX

  •  1
  • LucyTurtle  · 技术社区  · 6 年前

    当日期范围选择器中的日期更改时,我正在尝试更改DIV的内部。我正在使用 Date Range Picker Accordion Table 以帮助处理此页。

    DIV包含一个手风琴表,当使用日期范围选择器选择不同的日期范围时,该表会更改以显示不同的数据日期范围。当表格重新生成时,它将不再像手风琴部分那样打开和关闭。

    这是我的页面上生成表格和日期范围选择器的HTML/PHP:

    <!-- Date selector -->
    <div id="reportrange">
        <i class="glyphicon glyphicon-calendar fa fa-calendar"></i>
        <span></span>
    </div>
    
    <!-- Our table -->
    <div id="replace">
        <?php
            $yesterday = date("m/d/Y", strtotime('-31 hours'));
            table($yesterday, $yesterday);
        ?>
    </div>
    

    在页面底部,我有日期范围选择器的所有信息,以及调用table()函数的AJAX调用。下面是AJAX调用:

    // AJAX call to our php function which creates the table
    $.ajax({
        url: 'php/jstranslator.php',
        type: 'post',
        data: {'action': 'table', 'start': begin, 'stop': stop},
        success:function(result){
            document.getElementById("replace").innerHTML = result;
        },
        error: function(xhr, desc, err) {
            console.log(xhr);
            console.log("Details: " + desc + "\nError:" + err);
        }
    });
    

    我需要得到帮助,找出为什么我的表在重新生成数据后将不再打开/关闭。如果您检查页面并查看内容,您可以看到表中充满了您无法看到的所有数据!

    1 回复  |  直到 6 年前
        1
  •  1
  •   LucyTurtle    6 年前

    感谢那些帮助过我的人!

    我的问题是js事件绑定到原始表。因此,我所要做的就是添加javascript,使表打开并接近ajax成功声明的结尾。

    /* When the date range is changed, update the table
     */
    $('#reportrange').on('apply.daterangepicker', function(ev, picker) {
        var begin = picker.startDate.format('MM/DD/YYYY');
        var stop = picker.endDate.format('MM/DD/YYYY');
    
        // AJAX call to our php function which creates the table
        $.ajax({
            url: 'php/jstranslator.php',
            type: 'post',
            data: {'action': 'table', 'start': begin, 'stop': stop},
            success:function(result){
                document.getElementById("replace").innerHTML = result;
                $(function(){
                    $(".fold-table tr.view").on("click", function(){
                        $(this).toggleClass("open").next(".fold").toggleClass("open");
                    });
                });
            },
            error: function(xhr, desc, err) {
                console.log(xhr);
                console.log("Details: " + desc + "\nError:" + err);
            }
        });
    });