为什么我的form提交后接收不到后台action返回的json数据
hunterbin
2009-05-12
我的form是这样的 var leavePanel = new Ext.FormPanel({ id:'leavePanel', //url:'LoginAction.action', frame:true, labelWidth:80, fileUpload:true, buttonAlign:'left', buttons:[{ text:'提交申请', type:'submit', handler:function(obj){ var note = Ext.get('context').getValue();//获得一些输入框的值 var toUser = Ext.get('todepartment').getValue(); var toDep = Ext.get('todepartment').getValue(); var fromUser =''; if(leavePanel.getForm().isValid()) { leavePanel.getForm().submit({ url:'myApplyAction.action',//后台的action params:{note:note,toUser:toUser,toDep:toDep,fromUser:fromUser}, waitTitle:'提示', method:'POST', waitMsg:'正在提交中,请稍候....', succcess:function(form,action){ alert('提交申请成功'); }, failure:function(from,action){ alert('提交申请失败'); } }) } } },{ text:'重置', handler:function(){ leavePanel.getForm().reset(); } }] }) 后台是一个struts2的action,使用了Json-plugin,返回一个json格式的数据,action的配置如下: <action name="myApplyAction" class="com.oa.action.LeaveApplyAction"> <result name="success" type="json"/> </action> 可以测试到这个action返回的json数据格式如{"success":true} 但不知道为什么我js里的两个回调函数 succcess:function(form,action){ 高手们看下我哪里出错了 我后台返回的{"success":true}json格式应该没错吧,应该可以给前台的success和failure两个回调函数识别到吧? |
|
fourfire
2009-05-12
后台的代码呢?
|
|
hunterbin
2009-05-12
后台代码是这样的,只对success属性进行json转化
public class LeaveApplyAction extends ActionSupport { private String note; private String toDep; private String toUser; private String fromUser; private LeaveService service; private boolean success = false; public boolean getSuccess() { return success; } public void setSuccess(boolean success) { this.success = success; } @JSON(serialize=false) public String getFromUser() { return fromUser; } public void setFromUser(String fromUser) { this.fromUser = fromUser; } @JSON(serialize=false) public String getNote() { return note; } public void setNote(String note) { this.note = note; } @JSON(serialize=false) public String getToDep() { return toDep; } public void setToDep(String toDep) { this.toDep = toDep; } @JSON(serialize=false) public String getToUser() { return toUser; } public void setToUser(String toUser) { this.toUser = toUser; } @JSON(serialize=false) public LeaveService getService() { return service; } public void setService(LeaveService service) { this.service = service; } @Override public String execute() throws Exception { if(!this.note.equals("") && !this.fromUser.equals("") && !this.toDep.equals("") && !this.toUser.equals("")) { this.success = service.applyForLeave(this.note, this.fromUser, this.toDep, this.toUser); } return SUCCESS; } |
|
hunterbin
2009-05-12
那个execute()方法的if判断贴漏了点,不过不影响
|
|
hunterbin
2009-05-12
service.applyForLeace()方法的参数也漏了点,这方法返回一个boolean
|
|
hunterbin
2009-05-12
终于弄好了,我把那个form里的fileUpload:true去掉就可以了
不知道这是为什么,知道的高手解释下 |
|
hunterbin
2009-05-12
而且开始有fileUpload:true时,中文参数传到后台是乱码的
去掉后也没有乱码了,看来要先去了解下Ext的fileUpload机制 |
|
shameant
2009-05-12
fileLoad:true 会不会把你的form 封装成文件流
没用过ext,漂流党... |
|
qixiaopeng
2009-05-13
去掉 fileUpload:true 曾经遇到过类似问题,就这样解决的
|
|
devilyard
2012-12-26
后台返回 的数据类型一定要是text/html
|