Jquery 如何从ajax响应(从Struts 2操作)重新加载(重新填充)jqGrid数据?

Jquery 如何从ajax响应(从Struts 2操作)重新加载(重新填充)jqGrid数据?,jquery,jqgrid,struts2,Jquery,Jqgrid,Struts2,我有以下代码只是为了从已经加载的jqGrid发送数据: jQuery("#bedata").click(function(){ //Function for button "bedata" var postData = "SOME DATA TO SEND" //Sending data: $.ajax({ type: "POST"; url: "GuardaFila.action", //Action called to data treatament (Struts 2

我有以下代码只是为了从已经加载的jqGrid发送数据:

jQuery("#bedata").click(function(){ //Function for button "bedata"

 var postData = "SOME DATA TO SEND"

//Sending data:
$.ajax({
    type: "POST";
    url: "GuardaFila.action", //Action called to data treatament (Struts 2)
    data : {
        jgGridData: postData, //PARAMETER jgGrdData with variable "postData" value
        customData: "someinfo" //Just another parameter called "customData" with more data,
    },

    dataType:"json",
    contentType: "application/x-www-form-urlencoded; charset=utf-8",

//Success function has the key that I am looking for:
    success: function(response, textStatus, xhr) {
        //SOME CODE HERE TO REFILL jqGrid.
        alert("success");
     },
    error: function(xhr, textStatus, errorThrown) {
        alert("error");
    }

});
});
jqGrid是以这种方式创建的:

  jQuery("#rowed3").jqGrid({
                url:'CargaTabla.action',
                datatype: "json",
                colNames:['id', 'Direccion', 'Nombre'],
                colModel:[
                    {name:'id',index:'id', width:55},
                    {name:'direccion',index:'direccion', width:90, editable:true},
                    {name:'nombre',index:'nombre', width:100,editable:true}
                ],
                jsonReader: {
                    root: 'gridModel',
                    id: '0',
                    cell :"",
                    repeatitems: false
                },


(....... etc)
因此,jqGrid表的id是#rowed3。我知道在ajax函数中:

        success: function(response, textStatus, xhr) {
        //SOME CODE HERE TO REFILL jqGrid.
        alert("success");
     },
响应参数具有一个用于网格的JSON格式的新内容。我尝试了一些方法用数据重新填充网格,比如用内容和其他设置“datastr”参数。以前有人遇到过这个问题吗


谢谢。

不要在这里重新发明轮子。jqGrid已经知道如何获取数据,所以您不需要调用
$.ajax
。只需更改网格参数,并告诉它执行它的操作(从内存中;如果需要,请更正函数名,但这会给您一个想法):


我想您可能正在寻找
grid.addJSONData
方法

例如:

success: function (data, textStatus) {
    if (textStatus == "success") {
       var grid = $("#rowed3")[0];
       grid.addJSONData(JSON.parse(data.d));
   }
},

请记住,您需要确保您的JSON数据格式与JSON阅读器中指定的格式匹配。

这可能会起作用,但它会破坏其他网格功能(例如,分页、搜索),因为网格仍为旧URL等配置。@Craig这是真的!触发器(“重新加载网格”);如果这就是所需要的,那么这是一个更简单的解决方案+1:)$(“#rowed3”)[0]在我的debuggin中是一个HTMLTable。如何再次将jqGrid作为对象获取?可能是var grid=jQuery(“#rowed3”);而是?var grid=jQuery(“#rowed3”)而不是var grid=$(“#rowed3”)[0];为我工作。我真的很抱歉,我还不能给你们打分:-(嘿,伙计们。谢谢你们两位的回复。是的,这是真的,jqGrid已经知道从哪里获取数据,但我需要做一个ajax调用,将数据从网格发送到服务器以升级数据库。我正在进行ajax调用,我想使用它的响应重新填充网格。不调用操作(url)要做到这一点。一旦ajax调用完成,该操作就完成了。谢谢,它使用var grid=jQuery(“#rowed3”);谢谢你们两位。更简单的是,在您的帮助下,我的ActionClass也可以在服务器上自动更新。我真的很抱歉,我还不能给你打分,但我需要15分。
success: function (data, textStatus) {
    if (textStatus == "success") {
       var grid = $("#rowed3")[0];
       grid.addJSONData(JSON.parse(data.d));
   }
},