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 流程
原文地址:https://www.cnblogs.com/bendanchenzhicheng/p/2166710.html