Jquery 如何从ajax响应(从Struts 2操作)重新加载(重新填充)jqGrid数据?
我有以下代码只是为了从已经加载的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
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));
}
},