Jqgrid中如何停止url发送(setGridParam)请求?
How to stop the url sending(setGridParam) request in Jqgrid?
我创建了外部三个复选框。
首先我选中男性复选框,将请求发送到后端,响应时间为 30 到 50 Sec.But突然我按下女性复选框,而不是将女性值参数发送到后端。
所以我想停止发送请求。使用新参数发送新请求。
发送新请求后上一个请求完成。
当我选中“全部”时,需要 2-3 分钟才能获取响应。在得到响应之前,其他参数不能是set/sent。
例如:如果我选中“All”,在收到“All”的响应之前,我无法发送 uncheck/check“Male”或“Female”的参数。
我使用 setGridParam 并以 JSON 格式获取数据。
获取需要 2-3 分钟
$("#sex,#age).change(function() {
var sexVal=$("#sex").val();
//sexVal values are Male, Female and All
var listURL='localset.php?mode=yes&sex='+sexVal;
$("#list451").jqGrid("clearGridData", true);
jQuery("#list451").jqGrid('setGridParam',{url : listURL,mtype:'POST',datatype:'json'}).trigger("reloadGrid");
});
jQuery("#list451").jqGrid({
url: 'localset.php?mode=yes',
datatype: "json",
height: 255,
width: 600,
colNames: ['Index', 'Name', 'Code', 'N Name', 'C Name'],
colModel: [{
name: 'item_id',
index: 'item_id',
width: 65,
sorttype: 'integer',
searchoptions: {
sopt: ['eq', 'ne', 'le', 'lt', 'gt', 'ge']
}
}, {
name: 'name',
index: 'name',
width: 150,
sorttype: 'string',
searchoptions: {
sopt: [cn]
}
}, {
name: 'code',
index: 'code',
width: 150,
sorttype: 'string',
searchoptions: {
sopt: ['eq', 'bw', 'bn', 'cn', 'nc', 'ew', 'en']
}
}, {
name: 'sex',
index: 'sex',
width: 150,
sorttype: 'string',
searchoptions: {
sopt: [cn]
}
}, {
name: 'c_name',
index: 'c_name',
width: 150,
sorttype: 'string',
searchoptions: {
sopt: [cn]
}
},
rowNum: 50,
rowTotal: 200,
rowList: [20, 30, 50],
loadonce: true,
mtype: "POST",
rownumbers: true,
rownumWidth: 40,
gridview: true,
pager: '#pager451',
sortname: 'item_id',
viewrecords: true,
sortorder: "asc",
caption: "External Check box Demo"
}); jQuery("#list451").jqGrid('filterToolbar', {
searchOperators: true
});
如果我理解正确你的问题你想取消之前的 Ajax 请求。你应该为它做两件事:
- 禁用在 Ajax 请求开始时创建的叠加层
- 执行未决 Ajax 请求的
abort
方法。
要删除覆盖并重置 jqGrid 用于内部用途的 $("#list451")[0].grid.hDiv.loading
,您只需调用 $("#list451")[0].endReq()
.
您可以使用 loadBeforeSend
回调来缓存最后一个 Ajax 请求的 jqXHR
。您只需将回调的第一个参数保存在外部作用域中定义的变量中。您可以调用 abort()
方法来中止之前的请求。
我创建了外部三个复选框。
首先我选中男性复选框,将请求发送到后端,响应时间为 30 到 50 Sec.But突然我按下女性复选框,而不是将女性值参数发送到后端。
所以我想停止发送请求。使用新参数发送新请求。
发送新请求后上一个请求完成。
当我选中“全部”时,需要 2-3 分钟才能获取响应。在得到响应之前,其他参数不能是set/sent。 例如:如果我选中“All”,在收到“All”的响应之前,我无法发送 uncheck/check“Male”或“Female”的参数。 我使用 setGridParam 并以 JSON 格式获取数据。
获取需要 2-3 分钟
$("#sex,#age).change(function() {
var sexVal=$("#sex").val();
//sexVal values are Male, Female and All
var listURL='localset.php?mode=yes&sex='+sexVal;
$("#list451").jqGrid("clearGridData", true);
jQuery("#list451").jqGrid('setGridParam',{url : listURL,mtype:'POST',datatype:'json'}).trigger("reloadGrid");
});
jQuery("#list451").jqGrid({
url: 'localset.php?mode=yes',
datatype: "json",
height: 255,
width: 600,
colNames: ['Index', 'Name', 'Code', 'N Name', 'C Name'],
colModel: [{
name: 'item_id',
index: 'item_id',
width: 65,
sorttype: 'integer',
searchoptions: {
sopt: ['eq', 'ne', 'le', 'lt', 'gt', 'ge']
}
}, {
name: 'name',
index: 'name',
width: 150,
sorttype: 'string',
searchoptions: {
sopt: [cn]
}
}, {
name: 'code',
index: 'code',
width: 150,
sorttype: 'string',
searchoptions: {
sopt: ['eq', 'bw', 'bn', 'cn', 'nc', 'ew', 'en']
}
}, {
name: 'sex',
index: 'sex',
width: 150,
sorttype: 'string',
searchoptions: {
sopt: [cn]
}
}, {
name: 'c_name',
index: 'c_name',
width: 150,
sorttype: 'string',
searchoptions: {
sopt: [cn]
}
},
rowNum: 50,
rowTotal: 200,
rowList: [20, 30, 50],
loadonce: true,
mtype: "POST",
rownumbers: true,
rownumWidth: 40,
gridview: true,
pager: '#pager451',
sortname: 'item_id',
viewrecords: true,
sortorder: "asc",
caption: "External Check box Demo"
}); jQuery("#list451").jqGrid('filterToolbar', {
searchOperators: true
});
如果我理解正确你的问题你想取消之前的 Ajax 请求。你应该为它做两件事:
- 禁用在 Ajax 请求开始时创建的叠加层
- 执行未决 Ajax 请求的
abort
方法。
要删除覆盖并重置 jqGrid 用于内部用途的 $("#list451")[0].grid.hDiv.loading
,您只需调用 $("#list451")[0].endReq()
.
您可以使用 loadBeforeSend
回调来缓存最后一个 Ajax 请求的 jqXHR
。您只需将回调的第一个参数保存在外部作用域中定义的变量中。您可以调用 abort()
方法来中止之前的请求。