【问题标题】:Remove JSON Object in jqGrid Post Data删除 jqGrid 发布数据中的 JSON 对象
【发布时间】:2016-04-15 18:10:43
【问题描述】:

我有一个带有两个按钮的过滤器网页,用于加载 jqGrid 的数据。

当用户点击“过滤器”时,我生成了 postData json 对象并将其发送到服务器。效果很好。

但是当用户点击“清除”时,我想清除过滤器并从 jqGrid 重新加载所有数据。这就是我被困的地方。

这就是我的过滤器发布到服务器的方式。

按钮点击的jQuery代码在这里:

    $('#btnFilter').click(function (event) {

        var filterObject = { 
            RecordID: $('#RecordID').val() 
            , Student: $('#Student').val() 
        }

        $("#jqGrid").jqGrid().setGridParam({ postData: { Filters: filterObject }, page: 1 }).trigger("reloadGrid");
    });

    $('#btnClear').click(function (event) {         

        var filterObject = {};
        $("#jqGrid").jqGrid().setGridParam({ postData: { Filters: filterObject }, page: 1 }).trigger("reloadGrid");
    });

尽管我确实使用 { } 为 filterObject 设置了 null JSON 对象,但浏览器缓存了 Filters 值,我无法设法删除它们。在下面的屏幕截图中,我们可以看到单击“清除”按钮时发送到服务器的 Ajax Post 和对象。

我想知道在单击“清除”时如何删除 Filters { } 对象。或者如果有更好的方法来实现我想要的,你能建议吗?

【问题讨论】:

    标签: javascript json ajax jqgrid


    【解决方案1】:

    如果您了解 jqGrid 将所有参数保存在一个内部对象中,这很容易做到。你可以使用

    var p = $("#jqGrid").jqGrid("getGridParam");
    

    获取 jqGrid 的所有选项。您可以直接在对象中修改属性。 postData 可通过p.postData 访问。如果只需要修改postData就可以使用

    var postData = $("#jqGrid").jqGrid("getGridParam", "postData");
    

    获取对内部postData 对象(p.postData) 的postData 属性的引用。因此您不需要使用setGridParam 来修改数据。删除您之前设置的Filters 属性

    $("#jqGrid").jqGrid("setGridParam", { postData: { Filters: filterObject }, page: 1 });
    

    你可以使用

    var postData = $("#jqGrid").jqGrid("getGridParam", "postData");
    delete postData.Filters;
    

    【讨论】:

    • 我从未在 Javascript 中看到过这个“删除”关键字。非常感谢。
    【解决方案2】:

    如果有人想知道,您可以传递 null 以使之前的 JSON 对象无效。完整的代码在这里。

    $("#jqGrid").jqGrid().setGridParam({ postData: { Filters: null}, page: 1 }).trigger("reloadGrid");
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-11-27
      • 1970-01-01
      • 1970-01-01
      • 2015-03-13
      • 2012-02-29
      • 2013-10-21
      • 1970-01-01
      • 2014-04-26
      相关资源
      最近更新 更多