【问题标题】:jquery bootgrid issue with requestHandler / post reloadrequestHandler / post reload的jquery bootgrid问题
【发布时间】:2015-04-11 10:54:12
【问题描述】:

我正在尝试将其他值(作为过滤器)传递给 jquery bootgrid。在我的表单中,我有两个日期范围,每次日期更改时我都需要刷新网格数据。

Handler requestHandler 和(过时的)post 允许我将其他参数传递给服务器,其他参数遵守标准

但是当我发布我的请求时,我无法添加我的自定义参数。使用萤火虫我只能看到标准参数喜欢

current=1
rowCount=10
searchPhrase=

请帮帮我!!

下面是我的完整 HTML 代码

<table id="grid-data" class="table table-condensed table-hover table-striped" data-toggle="bootgrid" data-ajax="true" data-url="HelpDesk/server.php">
                    <thead>
                        <tr>
                        <th data-column-id="ticket_no" data-type="string" data-identifier="true">ticket_no</th>
                        <th data-column-id="title">title</th>
                                                <th data-column-id="parent_id" data-type="string">parent_id</th>
                        <th data-column-id="contact_id" data-type="string">contact_id</th>
                        <th data-column-id="status">status</th>
                        <th data-column-id="priority" data-type="string">priority</th>
                                                <th data-column-id="smownerid" data-type="string">smownerid</th>
                        </tr>
                    </thead>

                </table> 

还有我的 js/jquery 代码

<!-- now write the script specific for this grid -->
<script language="javascript">
jQuery( document ).ready(function() {   

    var grid = $("#grid-data").bootgrid({
        ajax: true,
        url: "HelpDesk/server.php",
        //requestHandler    
        //Transforms the JSON request object in what ever is needed on the server-side implementation.
        // Default value is function (request) { return request; }.
        requestHandler: function(request)
        {
            console.log("requestHandler - nevel called");
            console.log(request);
            return request;     
        }/*,
        post: function () 
        {  
            console.log("post - nevel called"); 
            return {datefrom:'aaaaaaaaa',dateto:'vvvvvvvvvv'}; 
        }*/
    });

    $('input[name="srch"]').click(function(){

        $("#grid-data").bootgrid("reload");
    });

});
</script>

【问题讨论】:

    标签: jquery jquery-bootgrid


    【解决方案1】:

    要将一些附加信息传递给您的服务器,您只需将这些参数添加到request 对象并返回它。例如:

    requestHandler: function (request) {
        request.myParam1 = "test";
        request.oneMoreMyParam = "test again";
        return request;
    }
    

    而在服务器端,您将收到如下信息:

    current = 1, 
    rowCount = 15,
    searchPhrase = "",
    myParam1 = "test",
    oneMoreMyParam = "test again"
    

    但是您写道,您的requestHandler 从未被调用过,对吧?它很奇怪。必须在 "reload" 事件上调用它。我也用这个功能。我也不像data-ajax="true" data-url="..." 那样写&lt;table&gt; 的属性并使用:

    <table id="grid-data" class="table table-condensed table-hover table-striped">
        <thead>...</thead>
        <tbody>...</tbody>
    </table>
    
    <script type="text/javascript">
        $("#grid-data").bootgrid({
            ajax: true,
            requestHandler: function (request) {
                request.myParam= $("#some-input").val();
                return request;
            },
            url: "..."
        });
    
        $("#some-button").on("click", function () {         
            $("#grid-data").bootgrid("reload");
        });
    </script>
    

    一切正常。

    【讨论】:

      【解决方案2】:

      对于任何来这里寻找答案的人。检查您是否在表格元素上设置了data-toggle="bootgrid"。这似乎覆盖了从 js 文件初始化的手动引导网格。删除它对我有用。希望这会有所帮助。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-11-15
        • 1970-01-01
        • 2011-05-19
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多