今天使用Ext写一个系统的后台,使用了FormPanel做表单,代码如下:
var employee_form_panel = new Ext.form.FormPanel({ renderTo:"hello", fileUpload:true, labelAlign: 'right', title: '档案信息', width: 800, frame:true, labelWidth:60, defaults:{width:200,xtype:"textfield"}, items: [{ xtype:'textfield', fieldLabel: '职工地址', allowBlank:false, blankText:"职工地址不能为空", name: 'address', width:300 }, { xtype:"htmleditor", width:300, height:400, name:"info", fieldLabel:"档案简介" }], buttons:[{text:"保存档案",handler:s},{text:"取消修改"}] }); function s(){ employee_form_panel.form.submit( { waitTitle:"请稍候", waitMsg:"正在保存数据...", url:"employeeManage.jhtml?method=save", method:"POST", success:function(){Ext.MessageBox.alert("系统提示","保存数据成功!");}, failure:function(){Ext.MessageBox.alert("系统提示","保存数据失败!")} }); }
传递到后台后,request中竟然获取不到任何数据,google了一圈没有找到答案,只有挨个排除,最终发现是fileUpload标签的原因,使用该标签后,就使用了一个iframe来上传,这样造成了后台获取不到数据,给fileUpload注释后发现正常了,问题又出现了,这里需要上传二进制数据就需要要使用该标签,分析了Ext代码后,发现原来问题出在自己的代码上,上传二进制数据时候只需要将success和failure的回调函数表示为function(action,form),这样就一切正常了!