背景:
今天新开发一个页面,功能与其他页面类似, 用jqgrid获取数据并表格展示。界面有一个简单的查询参数,点击查询后显示不同的筛选数据。
问题:
之前是将url中放入请求参数,当使用更改url的方式,发现重新加载时不生效,始终是第一次的url参数。
jump/getReport?areaCode=$("#areaCode").val()
function search(){
$("#jqGridMine").jqGrid("clearGridData");
var areaCodeNow = $("#areaCodeSelect").find("option:selected").val();
var url = 'jump/getReport?areaCode='+areaCodeNow ;
var queryData = {
url: url
}
$("#jqGridMine").jqGrid('setGridParam', {
postData: queryData
}).trigger("reloadGrid");
}
使用上述setGridParam时,传入了url参数,后台显示传入前url是我们需要的areaCode,但是观察请求,仍是之前的url
原因:
因为setGridParam的是postData,而postData的格式是{key:value,key:value...}。所以,在这里jqGrid把url作为了key,而不是url
办法:
修改参数位置,url不带参数,增加postData设置,重载时上传postData。
$("#jqGridMine").jqGrid({
url: 'jump/getReport',
postData:{areaCode:areaCodeInit},
function search(){
$("#jqGridMine").jqGrid("clearGridData");
var areaCodeNow = $("#areaCodeSelect").find("option:selected").val();
$("#jqGridMine").jqGrid('setGridParam', {
postData: {areaCode:areaCodeNow}
}).trigger("reloadGrid");
}
或者是在重载时,setGridParam中上传url参数
$("#jqGridMine").jqGrid({
url: 'jump/getReport?areaCode='+$("#areaCode").val(),
function search(){
$("#jqGridMine").jqGrid("clearGridData");
var areaCodeNow = $("#areaCodeSelect").find("option:selected").val();
var url = 'jump/getReport?areaCode='+areaCodeNow;
$("#jqGridMine").jqGrid('setGridParam', {
url: url
}).trigger("reloadGrid");
}