Ext.Ajax.request和formPanel.getForm().submit() success的区别

转载自:http://huiseyiyu.iteye.com/blog/1270550

formPanel提交方式

Ext.MessageBox.wait('正在提数据, 请稍侯 ...', '提示');  
  xxxxFormPanel.getForm().submit({  
    timeout : 60,  
    success : function(form, action) {  
        // 业务成功  
        Ext.MessageBox.updateProgress(1);  
        Ext.MessageBox.hide();  
  
    },  
    failure : function(form, action) {  
        // 业务失败  
        Ext.MessageBox.updateProgress(1);  
        Ext.MessageBox.hide();  
  
        switch (action.failureType) {  
            case Ext.form.Action.CLIENT_INVALID :  
                Ext.Msg.alert('错误!', '存在未通过验证的数据!');  
                break;  
            case Ext.form.Action.CONNECT_FAILURE :  
                Ext.Msg.alert('错误!', '连接错误!');  
                break;  
            case Ext.form.Action.SERVER_INVALID :  
                Ext.Msg.alert('错误!', action.result.msg);  
        }  
    }  
});

Ajax提交方式

 Ext.Ajax.request({   url : ...,   params : {    ...   },   success : function(response, opts) {    var o = Ext.util.JSON.decode(response.responseText);    if( o.success){     // 业务执行成功    } else{     // 业务执行失败    }   },

  failure : function(response, opts) {    // ? 此处怎么做,大家可以说说  :oops:   }  });

 另一种写法:


new Ext.data.Store({
 proxy : new Ext.data.HttpProxy({
  url : basePath + '/fundAuditAction.do'
 }),
 reader : new Ext.data.JsonReader({
  totalProperty : 'total',
  root : 'root',
  successProperty : 'succeed',
  fields : [...]
 })
    ,successProperty: 'success' // 后台传输的标识。必须
 ,listeners:{
  exception:function(dataProxy, type, action, options, response, arg) { 
   var o = Ext.util.JSON.decode(response.responseText);
   if(!o.success){
    Ext.Msg.alert('错误提示',o.message);
   }
        }
 }
});


 二者都可以接收服务器端返回的如下json串:

 

{success:true/false,msg:'xxxx'}


如果success为true,对于formPanel提交方式,程序会进入success回调函数;对于Ajax提交方式,程序也会进入success回调函数。
而区别在于如果success为false,对于formPanel提交方式,程序会进入failure回调函数;而Ajax提交方式,程序依然会进入success回调函数。


总结:
success的true和false可以用来表示业务的成功或者失败。
1、在formPanel提交方式中,成功后的操作要在success回调函数中进行,失败后的操作在failure回调函数中进行;
2、在Ajax提交方式中,业务的成功失败都应该在success回调函数中进行操作,而true或者false以o.success获得(具体见代码及注释)。

Ext.Ajax.request 中success failure:

success参数表示响应成功后的回调函数。

failure参数表示响应失败后的回调函数。

注意,这里的响应失败并不是指数据库操作之类的业务性失败,而是指HTTP返回404或500错误,请不要把HTTP响应错误与业务错误混淆在一起。

好的做法:

在框架中加入异常的捕获(比如:拦截器),对异常进行在封装和定位,不同的异常代码表示不同的错误信息,对于EXT的异常提示会有很好的帮助 。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值