以下是典型的JQGrid JSON响应:
{
"page":1,
"records":537,
"rows":[..],
"rowCount":10,
"total":54
}
除此之外,我还想发送其他自定义数据。例如,我想发送最后一次搜索的数据库时间,以便在此后发生更改时我可以延迟重新加载网格。以下是我希望发送该数据的方式:
{
//Custom name-value pairs:
"nameValues":{"lastSearchTime":"2011/09/01:14:14:56"},
//Normal JSON data:
"page":1,
"records":537,
"rows":[..],
"rowCount":10,
"total":54
}
问题是JQGrid吞并了JSON响应而不是将其转发到gridComplete
方法。换句话说,params在以下函数中未定义:
function myGridComplete (params){
//params is undefined!
var JSONResponse = ?;//I need your help here!!!
globalGridVariables.lastSearchTime = JSONResponse.nameValues.lastSearchTime;
//Rest of grid complete method
..
}
如果有办法在gridComplete
方法中访问JSON响应对象,或者是否有另一种支持的方法可以将自定义数据添加到JSON响应中,请告诉我。
非常感谢!
注意:我不想将其作为隐藏列发送,因为这样效率很低。
答案 0 :(得分:4)
您可以使用loadComplete
代替gridComplete
。 loadComplete
事件有一个参数(例如data
),表示服务器响应的完整数据,包括所有扩展名。
您也可以将nameValues
重命名为userdata
,然后使用$('#list').jqGrid('getGridParam', 'userData')
获取值。有关详细信息,请参阅here。
此外,您可以考虑使用更多HTTP caching(请参阅here和here)了解您在问题中描述的目标。
答案 1 :(得分:1)
您可以使用具有反序列化响应的beforeProcessing并在gridComplete和loadComplete之前激活。
例如:
beforeProcessing: function (data, status, xhr) {
myArray = data.rows;
}
只是为了让文档更清晰:
以下是发出ajax请求时事件的执行顺序