今天在做项目时,遇到一个问题,store删除最后一行数据后,不能重新加载数据,还是显示原来的那条数据
Ext.Ajax.request({
url : basepath + '/RoleInfoAction_deleteRoleInfo.action?idStr=' + idStr,
waitTilte : '系统提示',
waitMsg : '正在删除数据,请您等待...', // 显示读盘的动画效果,执行完成后效果消失
success:function(response){
Ext.Msg.alert('系统提示', '删除成功!',function(btn){
if(btn == 'ok'){
dataStore.load({
params : {
start : 0,
limit : parseInt(pagesize_combo.getValue())
}
});
}
});
},
failure : function() {
Ext.MessageBox.alert('系统提示', '操作失败!');
}
});
经过几次测试,发现原因是最后一条数据被删除后,后台返回的数据格式不正确,store.proxy.reader不能解析后台返回的数据,所以在后台处理中,即使无数据 ,也要返回正确的数据格式(比如json:‘total:0,data:[]’)
if(roleJson == null){
String null_json = "{count: 0,data: []}";
ServletActionContext.getResponse().getWriter().write(null_json);
}else {
ServletActionContext.getResponse().getWriter().write(roleJson);
}