如下例代码中,提交发送异步请求时,或表单提交进行数据保存时,利用form.getValues()获取值时,有时会获取不到对应的textfield,combobox,datefield等字段的值。(有的字段能获取到""空值,能形成key:""键值对;有的字段值为空时,后台就接收不到值为空的键值对)原因在于getValues()不是通过遍历每个对象来获取值的,而是遍历html节点来获取对象值的。简单的来说是组件的问题。
解决办法可以用改变form布局的方式,或提交时通过findField找到对应的值,设置到对应的隐藏字段中提交。
var request = Ext.Ajax.request({
method: 'post',
url : getRootPath() + '/xxxx.do?method=savexxxx',
params: {
cplan : Ext.encode(form.getValues())
},
success: function(response){
var data = Ext.JSON.decode(response.responseText);
if(data.res == true){
Ext.Msg.alert("操作结果信息", data.msg);
}else{
Ext.Msg.alert("操作结果信息", data.msg);
}
},
failure: function(response){
Ext.Msg.alert("错误", "无法访问后台");
}
});