$("#result-panel").datagrid('load',{
id:id,
flag:flag,
channel_code:code,
start_time:start,
end_time:end
});
可以通过onBeforeLoad事件去看请求的参数,一共发送了两次请求。
在执行load方法时,会有个setTimeOut函数,可断点查看源码,有可能是在等待TimeOut的过程中,datagrid发现了url携带参数信息发生了变化,所以又再次发送了一次请求。所以在onBeforeLoad事件中你会看到两次请求,一次是之前的参数,一次是正确的参数。所以就会存在数据差错,
解决方法是:先获取数据再加载。
$.ajax({
url:'newReports/showMenuQaStatisticList',
type:"post",
data:{
id:selectId,
flag:flag,
channel_code:code,
start_time:start,
end_time:end
},
async: true,
success:function(data){
$("#result-panel").datagrid("loadData",data);
}
});
还有就是:有关datagrid初始化时为什么会向后台发送两次请求的解释
html代码中利用class声明了datagrid,导致easyUI解析class代码的时候先解析class声明中的datagrid,这样组件就请求了一次url;然后又调用js初始化代码请求一次url。这样导致了重复加载,解决的方法就是只用一种初始化方法来声明easyUI组件以避免重复的提交请求,即删除html中的class声明(class="easyui-datagrid")