bootgrid自定义加载数据

bootgrid custom loading of data

现在我正在尝试为 college.Now 生成一个基于主题的 bootgrid table 它可以很好地显示所有 data.But 我想要的是一个高级搜索,其中基于选择主题在分支和 semester.I 上获取分支和学期选项,在 syfetch.php 函数中我执行高级 serach.Here 正在发送函数

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

            var branch=$("#branch").val();
            var semester=$("#semester").val();

            var formData = new FormData();
            formData.append('branch', branch);
            formData.append('semester', semester);

            var productTable = $('#product_data').bootgrid({

            url: "sylfetch.php",
            ajax: true,
            data:formData,
            type:"POST",
            post: function(data)
            {
                return{
                id: "b0df282a-0d67-40e5-8558-c9e93b7befed"
                    };
            },

            formatters: {
                "link": function(column, row) {
                return "<a href='" + row.slink + "'>Download</a>";
                }



            }
        });
        $('#product_data').bootgrid('reload');
    });

现在,每当我尝试读取 sylfetch.php 中学期和分支的值时,它都会停止工作

$branch = $_POST["branch"];
$semester= $_POST["semester"];

现在我认为使用 ajax 发送这些变量有错误所以请帮助我。

bootgrid 配置中的参数之一是 post,它是一个函数。此函数允许您向 post 数据添加自定义值。然后像这样使用它:

var productTable = $('#product_data').bootgrid({

    url: "sylfetch.php",
    ajax: true,
    data: formData,
    type: "POST",
    post: function (data) {
        return {
            branch: $("#branch").val(),
            semester: $("#semester").val(),
        };
    },
    formatters: {
        "link": function (column, row) {
            return "<a href='" + row.slink + "'>Download</a>";
        }
    }
});

$('#semester').change(function () {
    productTable.bootgrid('reload');
});

首先要注意的是,您不需要在每次更改学期时都重建整个网格,因为网格中唯一发生变化的是它的数据。因此,您保留对网格的引用(就像您已经在做的那样)并重新加载它。

每次 bootgrid 重新加载(例如,用户切换到另一个页面,或按另一列排序,或单击刷新按钮),都会再次调用 post 函数 .因此,您可以从 DOM 那里加载分支和学期。

您之前的代码覆盖了您传递给数据的 formData,因为它正在创建一个只有 id 属性 的新对象,您可能从某个演示中获得了该对象,而您根本没有使用:

return{
    id: "b0df282a-0d67-40e5-8558-c9e93b7befed"
};