You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

jQuery Bootgrid分页问题:请求方法异常与current参数缺失

解决jQuery Bootgrid的两个分页问题

我帮你梳理下这两个问题的原因和解决方案,应该都是配置细节没踩对:

问题1:POST请求强制无效,默认用GET发送

jQuery Bootgrid的AJAX默认请求方法就是GET,只写ajax: true不会自动切换为POST。要强制改用POST,你需要把ajax配置从布尔值改成对象,显式指定请求方法:

ajax: {
    url: "http://localhost/do_dubai/vat_invoice/get_list/",
    method: "POST", // 核心:覆盖默认的GET请求
    contentType: "application/x-www-form-urlencoded; charset=UTF-8", // 适配后台表单参数接收逻辑
    processData: true
},

之前你尝试在其他地方指定POST无效,是因为ajax: true会触发Bootgrid的默认AJAX配置,里面硬编码了GET方法,必须通过这个对象配置来覆盖默认行为。

问题2:点击分页时current参数丢失

你提到首次加载current=1正常,但分页切换时参数消失,大概率是Bootgrid的默认分页参数名是page,而你的后台期望接收current。虽然首次加载可能因为初始化逻辑巧合传了current,但分页操作时Bootgrid只会传递它默认的page参数。

解决方法是用requestHandler函数,把Bootgrid默认的page参数映射成你需要的current,确保每次请求(包括分页点击)都带上这个参数:

requestHandler: function(request) {
    // 将Bootgrid默认的page参数转为后台需要的current
    request.current = request.page;
    // 如果后台不需要page参数,可以删掉它
    // delete request.page;
    return request;
},

另外,建议显式加上pagination: true(虽然默认值是true),避免因为其他配置冲突导致分页逻辑失效。

整合后的完整代码

把上面的配置整合到你的代码里,最终版本应该是这样:

var grid = $("#grid-data").bootgrid({
    ajax: {
        url: "http://localhost/do_dubai/vat_invoice/get_list/",
        method: "POST",
        contentType: "application/x-www-form-urlencoded; charset=UTF-8",
        processData: true
    },
    rowCount: [200, 100, 50, -1],
    pagination: true,
    requestHandler: function(request) {
        request.current = request.page;
        return request;
    },
    post: function() {
        return {
            "date_from": $("#date_from").val(),
            "date_to": $("#date_to").val(),
            "status": $("#status").val()
        };
    }
});

最后提醒下:如果后台之前是用GET方式接收参数,改成POST后要对应调整参数获取方式(比如PHP里从$_GET改成$_POST),不然也会出现参数接收不到的情况。

内容的提问来源于stack exchange,提问作者Wazan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 03:58:58