Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 处理jqGrid ajax调用的正确方法_Javascript_Jquery_Ajax_Jqgrid - Fatal编程技术网

Javascript 处理jqGrid ajax调用的正确方法

Javascript 处理jqGrid ajax调用的正确方法,javascript,jquery,ajax,jqgrid,Javascript,Jquery,Ajax,Jqgrid,我不只是在jqGrid定义中硬编码url,而是希望有自己的函数来执行AJAX调用 我尝试了几个选项,但没有一个真正模仿直接应用url的情况 基本上,我需要的是保留jqGrid的所有默认行为,但我是负责服务器ajax调用的人 var loadData = function () { var formData = $('#formFilters').serializeArray(); getData(formData) .then(function (data) {

我不只是在jqGrid定义中硬编码url,而是希望有自己的函数来执行AJAX调用

我尝试了几个选项,但没有一个真正模仿直接应用url的情况

基本上,我需要的是保留jqGrid的所有默认行为,但我是负责服务器ajax调用的人

var loadData = function () {
    var formData = $('#formFilters').serializeArray();

    getData(formData)
        .then(function (data) {
            $grid
                .setGridParam({ "datatype": "jsonstring", "datastr": data })
                .trigger("reloadGrid");

            resizeGrid();
    })
};
而电网是这样插上的:

$grid.jqGrid({
    datatype: loadData,
    colModel: [...]
这里的主要问题是排序不会触发ajax调用,我恐怕需要对此进行更多的修改

关于如何实现网格和数据服务功能之间的这种解耦,是否有最佳实践

谢谢,
Alex

您可以参与此活动:

jqGridSortCol

这里有记录:

您可以尝试先获取当前过滤器对象,如下所示:

var f = 'gridselector'
var flts = $( '#' + f ).jqGrid('getGridParam', 'postData').filters
$( '#' + f ).jqGrid( 'setGridParam', { search: true, postData: flts } ); 
$( '#' + f ).jqGrid().trigger('reloadGrid');
您可以更改该对象,然后在钩住的事件上尝试以下操作:

var f = 'gridselector'
var flts = $( '#' + f ).jqGrid('getGridParam', 'postData').filters
$( '#' + f ).jqGrid( 'setGridParam', { search: true, postData: flts } ); 
$( '#' + f ).jqGrid().trigger('reloadGrid');

附言。。也许你可以做一些jsfiddle来解决你的问题,这样我们可以更深入地了解一下:

你能解释一下在jqGrid定义中对url进行硬编码的意思吗?你想要一种你自己需要的功能吗?如果您要编写一个示例,那么我将展示可以使用哪些jqGrid参数。可能您只需要将loadonce:true选项与postData.Hi-Oleg结合使用,因此通常的用法是使用网格的url属性,ajax调用将在内部完成。问题是,在这个项目中,我不能直接调用理解jqGrid postData结构的服务器端服务。因此,我拥有的是我自己的函数,它接受postData信息并以服务器可以理解的方式执行ajax调用。现在的问题是,按照我的方式进行操作,网格的行为就像它的本地数据一样。@对不起,但是您没有发布代码或您所做的事情的确切示例。jqGrid可以使用动态url参数并进行任何类型的序列化。如果你发布你所做的示例,我将展示如何将代码转换为使用datatype:json和其他完全定制Ajax调用的选项的代码。这正是我想要避免的黑客行为。理想情况下,我希望保留网格的所有默认功能,但自己处理ajax调用。这主要是因为我不能完全控制服务器,我需要使用现有的服务器。另一个原因是更多的设计,试图将UI配置与实际执行后端调用的方法分离。我为您提供了官方jqgrid文档的链接,以及如何在您需要的事件中使用它,正如您所说的,这就是列排序。。这可不是什么乱七八糟的东西!我最终走上了这条路,效果很好。当我说黑客只是因为我跳,网格可以触发刷新自动。谢谢