zoukankan      html  css  js  c++  java
  • Ext FormPanel submit 与Ext.Ajax

    Ext FormPanel submit 与Ext.Ajax.request提交的区别

      
    前置:
    后台成功返回字符串:{success:true,msg:'操作成功!'}
    后台失败返回字符串:{success:false,errors:'操作失败!'}
    当submi提交时,action不存在后台返回下图字符串:


    下面所有的action不存在,是指url路径不存在

    FormPanel 提交代码如下:
    Java代码
    1. var new Ext.form.FormPanel({})   
    2.     
    3. G.getForm().submit({//客户端的数据提交给服务器   
    4.                     url:wayfoon.MMS.DataPage +'/ext2Upload.action'     
    5.                     //waitMsg:"正在提交表单数据,请稍候。。。。。。",       
    6.                     failure:function(form, action){   
    7.                         Ext.MessageBox.alert('警告'action.result.errors);          
    8.                     },         
    9.                     success: function(form, action){    
    10.                         Ext.MessageBox.alert('信息'action.result.msg);   
    11.                             
    12.                 });   
    根据后台json 字符串 success的值(ture/false)自动选择failure或者success,也可以捕捉前台错误(走failure流程),比如数据非法而被强制提交时,
    后台字符串需要通过action.result 转成json 字符串,供我们按习惯的方法使用,

    对于后台异常处理,比如 action不存在,则无能为力,会出JavaScript错误,
    错误处,ext-all.js的代码
    Java代码
    1. this.decode function(json) {   
    2.         //alert(json);   
    3.   return ("(" json ")")   
    4.   
    原因是无法将上图(如图)的字符串转成json字符串,导致无法判断走哪个流程,而正常情况下,返回的是 {success:true,msg:'操作成功!'}或其他。
    试了将上面代码使用try{}catch (){} 还是不能解决JavaScript错误,我们一般可以避免这种后台错误,如果非得解决的话,不知道有没有好的解决方法。


    Ext.Ajax.request提交代码如下:
    Java代码
    1. Ext.Ajax.request({   
    2.     url:wayfoon.MMS.DataPage+'/cpSMS.action?action=submitSMS',   
    3.     method:'POST',   
    4.     params:'id='+id,   
    5.     success:function(form,action){   
    6.         var obj Ext.util.JSON.decode(form.responseText);   
    7.         if(obj.success==true)   
    8.            
    9.             Ext.Msg.alert('提示',obj.msg);   
    10.             ds.reload();   
    11.         }   
    12.         else  
    13.         {   
    14.             //Ext.Msg.alert('提示',obj.errors);   
    15.             Ext.Msg.alert('提示',obj.msg);   
    16.             
    17.     },   
    18.     failure:function(form,action){   
    19.         Ext.Msg.alert('警告','系统错误');   
    20.     }   
    21. });  
    后台字符串通过Ext.util.JSON.decode 转成json字符串
    不能自动根据json字符串success的值来选择流程 ,需要根据obj.success的值来判断走哪个流程

    该failure:可以捕捉系统异常,比如,数据未曾提交到后台或action 不存在,此时走failure 流程
  • 相关阅读:
    GitLab用户权限管理
    类似vant中的tab实现
    Gitgitee/github/gitlab账号分离
    Vim操作
    partition by 用法
    crontab执行feat_gen.sh时,报错找不到pyspark
    SQL同一个字段出现null和0值,有何区别,原因是什么?left join导致null值出现,case when导致0值出现
    linux 定时任务crontab的用法
    卡方检验
    ROC与AUC
  • 原文地址:https://www.cnblogs.com/bendanchenzhicheng/p/2166710.html
Copyright © 2011-2022 走看看