前置:
后臺成功返回字符串:{success:true,msg:'操作成功!'}
后臺失敗返回字符串:{success:false,errors:'操作失敗!'}
當submi提交時,action不存在后臺返回下圖字符串:
下面所有的action不存在,是指url路徑不存在
FormPanel 提交代碼如下:
var G = new Ext.form.FormPanel({})
G.getForm().submit({//客戶端的數據提交給服務器
url:wayfoon.MMS.DataPage +'/ext2Upload.action',
//waitMsg:"正在提交表單數據,請稍候。。。。。。",
failure:function(form, action){
Ext.MessageBox.alert('警告', action.result.errors);
},
success: function(form, action){
Ext.MessageBox.alert('信息', action.result.msg);
}
});
根據后臺json 字符串 success的值(ture/false)自動選擇failure或者success,也可以捕捉前臺錯誤(走failure流程),比如數據非法而被強制提交時,
后臺字符串需要通過action.result 轉成json 字符串,供我們按習慣的方法使用,
對于后臺異常處理,比如 action不存在,則無能為力,會出JavaScript錯誤,
錯誤處,ext-all.js的代碼
this.decode = function(json) {
//alert(json);
return eval("(" + json + ")")
}
原因是無法將上圖(如圖)的字符串轉成json字符串,導致無法判斷走哪個流程,而正常情況下,返回的是 {success:true,msg:'操作成功!'}或其他。
試了將上面代碼使用try{}catch (){} 還是不能解決JavaScript錯誤,我們一般可以避免這種后臺錯誤,如果非得解決的話,不知道有沒有好的解決方法。
Ext.Ajax.request提交代碼如下:
Ext.Ajax.request({
url:wayfoon.MMS.DataPage+'/cpSMS.action?action=submitSMS',
method:'POST',
params:'id='+id,
success:function(form,action){
var obj = Ext.util.JSON.decode(form.responseText);
if(obj.success==true)
{
Ext.Msg.alert('提示',obj.msg);
ds.reload();
}
else
{
//Ext.Msg.alert('提示',obj.errors);
Ext.Msg.alert('提示',obj.msg);
}
},
failure:function(form,action){
Ext.Msg.alert('警告','系統錯誤');
}
});
后臺字符串通過Ext.util.JSON.decode 轉成json字符串
不能自動根據json字符串success的值來選擇流程 ,需要根據obj.success的值來判斷走哪個流程
該failure:可以捕捉系統異常,比如,數據未曾提交到后臺或action 不存在,此時走failure 流程