为了账号安全,请及时绑定邮箱和手机立即绑定

数据表没有被过滤/重新加载

数据表没有被过滤/重新加载

温温酱 2023-08-18 17:16:03
我正在使用 JQuery Datatable 插件处理服务器端,当下拉列表更改时它不会刷新。我将通过数据表向我的 PHP 类发送一个值,该类从后端获取记录。那么场景是每当下拉列表更改时,表将根据所选值进行排序。我现在尝试做的方式甚至在下拉列表更改时不会触发。<script type="text/javascript">    //Initially gets the selected value of dropdown    var status= $("#orderStatus option:selected").text();    //DataTable Initialization    $(document).ready(function() {        var tableone = $('#example').DataTable( {            "processing":   true,            "serverSide":   true,            "paging"    :   true,            "searching" :   true,            "sDom": 'rtip',            "iDisplayLength"    :   100,            "processData": false,            "ajax": {                url  :"fetch.php",                type : "POST",                data : {                    status: status                }            }        } );        //Search field        $('#search').keyup(function(){            tableone.search($(this).val()).column(0).draw() ;        });    } );    //Whenever the value is changed, the table has to be sorted acc to its value.    $(document).on('change','#orderStatus',function(event){        var drpStats= $(this).val();        $.ajax({            url  :"filter.php",            type : "POST",            data : {                status : drpStats            },            success: function (data) {                $('#example').DataTable().ajax.reload();            }        });    });</script>我正在尝试另一种方法,即下拉菜单在更改时被触发,但不获取值。那个也附上了。这样我就可以获得下拉列表的变化值,但数据表一旦更改就不会被过滤。可能是什么原因?在控制台中,它返回 fetch.php 和 filter.php 的 JSONS。解决方案可能很简单。但我不知道我在哪里犯了错误。如果需要更多信息,请发表评论?
查看完整描述

1 回答

?
料青山看我应如是

TA贡献1772条经验 获得超8个赞

经过几个小时的努力,我发现当初始化数据表时,应该直接从下拉列表中获取传递的数据,而不是将变化的值分配给变量并传递该数据。


<script type="text/javascript">


    //Initially gets the selected value of dropdown

    var status= $("#orderStatus option:selected").text(); //This is unnecessary.


    //DataTable Initialization

    $(document).ready(function() {

        var tableone = $('#example').DataTable( {

            "processing":   true,

            "serverSide":   true,

            "paging"    :   true,

            "searching" :   true,

            "sDom": 'rtip',

            "iDisplayLength"    :   100,

            "processData": false,

            "ajax": {

                url  :"fetch.php",

                type : "POST",

                //It's changed here

                data : function(data){

                    var status = $('#orderStatus').val();

                    data.orderStatus = status;

                }

            }

        } );


        //Search field

        $('#search').keyup(function(){

            tableone.search($(this).val()).column(0).draw() ;

        });


       //Then Redraw the datatable when the dropdown is selected

            $('#orderStatus').change(function(){

            tableone.draw();

        });

    });

并在服务器端接收发布的下拉列表


$orderStatus = $_POST['orderStatus'];

参考:https ://makitweb.com/how-to-add-custom-filter-in-datatable-ajax-and-php/?unapproved=13009&moderation-hash=c02720a3cdf60b2886fed5a45824b850#comment-13009


查看完整回答
反对 回复 2023-08-18
  • 1 回答
  • 0 关注
  • 91 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信