在版本4.3.1上自动取消reuest jqGrid

在版本4.3.1上自动取消reuest jqGrid,jqgrid,free-jqgrid,Jqgrid,Free Jqgrid,我已经检查了下面的链接,但解决方案仅在版本4.3.2之后提供支持 目前我使用的是4.3.1版本,它不支持触发器处理程序。在版本4.3.1中,是否有其他方法可以解决此问题。因为目前我无法升级到新版本。更改jqgrid核心js文件也很好 我需要解决下面的问题,同样的问题已经提出,这是我在链接中也给出了 如果用户在响应返回之前进行了另一个筛选选择,网格不会取消现有请求,也不会提交新请求,因此在用户进行第二次选择后的某个时间点,网格会更新以显示第一次选择的响应。此外,当您更改过滤器选择时,网格会自动更新

我已经检查了下面的链接,但解决方案仅在版本4.3.2之后提供支持 目前我使用的是4.3.1版本,它不支持触发器处理程序。在版本4.3.1中,是否有其他方法可以解决此问题。因为目前我无法升级到新版本。更改jqgrid核心js文件也很好

我需要解决下面的问题,同样的问题已经提出,这是我在链接中也给出了

如果用户在响应返回之前进行了另一个筛选选择,网格不会取消现有请求,也不会提交新请求,因此在用户进行第二次选择后的某个时间点,网格会更新以显示第一次选择的响应。此外,当您更改过滤器选择时,网格会自动更新,因此为了让它显示您想要的数据,您必须将您的选择更改为其他内容,等待加载,然后再将其更改回来


要取消jqGrid发送的底层Ajax请求,需要访问对象,对象是对象的超集。对象具有方法,可用于取消挂起的Ajax请求

9年前,我发布了一篇文章,其中描述了即使在非常旧的jqGrid版本中,人们如何访问
jqXHR
对象。如果使用jqGrid 4.3.1,则可以执行以下操作:

1) 将以下回调添加到代码中,或修改现有回调
loadBeforeSend
beforeProcessing
loadError
以初始化或清除新的
jqXhr
参数:

loadBeforeSend:function(jqXhr){
此参数为jqXhr=jqXhr;
返回true;
},
预处理前:函数(){
this.p.jqXhr=null;
返回true;
},
loadError:函数(){
this.p.jqXhr=null;
}
2) 使用以下代码将新方法
abortAjaxRequest
添加到jqGrid

$.jgrid.extend({
abortAjaxRequest:函数(){
返回此。每个(函数(){
如果(this.p.jqXhr!=null){
this.p.jqXhr.abort();
}
this.grid.endReq.call(this);
});
}
});
之后,您可以使用类似于
$(“#list”).jqGrid(“abortAjaxRequest”)的代码
取消挂起的Ajax请求。如果需要测试是否存在挂起的Ajax请求,可以测试
$(“#list”).jqGrid(“getGridParam”,“jqXhr”)不是
null

更新:方法
endReq
未保存在
此.grid
中。
abortAjaxRequest
的正确代码可以是以下代码:

$.jgrid.extend({
abortAjaxRequest:函数(){
返回此。每个(函数(){
如果(this.p.jqXhr!=null){
this.p.jqXhr.abort();
}
this.grid.hDiv.load=false;
$(“#lui#”+$.jgrid.jqID(this.p.id)).hide();
$(“#加载”+$.jgrid.jqID(this.p.id)).hide();
});
}
});

Hi@oleg,感谢您的分享,但是我们使用了jqgrid的缩小版,我们得到以下错误,表示未定义endReq endReq方法转换为aa=function(){a.grid.hDiv.loading=false;switch(a.p.loadui){case“enable”:b(“#load_u”+b.jgrid.jqID(a.p.id)).hide();break;case“block”:b(“#lui_”+b.jgrid.jqID(a.p.id)).hide();b(#load_”+b.jgrid.jqID(a.p.id)).hide())},我尝试调用类似=>this.grid.aa.call(this);但显示错误消息UncaughtTypeError:无法读取的属性“call”undefined@karthickeyan你说得对<代码>endReq
未保存在4.3.1版中的
此.grid
中。参见更新部分我的答案,了解
abortAjaxRequest
的固定代码。谢谢@Oleg,你是宝石。现在它工作得很好。我已将$(“#load_u”+$.jgrid.jqID(this.p.id)).hide()中的“ts.p.id”更改为“this.p.id”;