前置:
后臺(tái)成功返回字符串:{success:true,msg:'操作成功!'}
后臺(tái)失敗返回字符串:{success:false,errors:'操作失敗!'}
當(dāng)submi提交時(shí),action不存在后臺(tái)返回下圖字符串:
下面所有的action不存在,是指url路徑不存在
FormPanel 提交代碼如下:
var G = new Ext.form.FormPanel({})
G.getForm().submit({//客戶(hù)端的數(shù)據(jù)提交給服務(wù)器
url:wayfoon.MMS.DataPage +'/ext2Upload.action',
//waitMsg:"正在提交表單數(shù)據(jù),請(qǐng)稍候。。。。。。",
failure:function(form, action){
Ext.MessageBox.alert('警告', action.result.errors);
},
success: function(form, action){
Ext.MessageBox.alert('信息', action.result.msg);
}
});
url:wayfoon.MMS.DataPage +'/ext2Upload.action',
//waitMsg:"正在提交表單數(shù)據(jù),請(qǐng)稍候。。。。。。",
failure:function(form, action){
Ext.MessageBox.alert('警告', action.result.errors);
},
success: function(form, action){
Ext.MessageBox.alert('信息', action.result.msg);
}
});
根據(jù)后臺(tái)json 字符串 success的值(ture/false)自動(dòng)選擇failure或者success,也可以捕捉前臺(tái)錯(cuò)誤(走failure流程),比如數(shù)據(jù)非法而被強(qiáng)制提交時(shí),
后臺(tái)字符串需要通過(guò)action.result 轉(zhuǎn)成json 字符串,供我們按習(xí)慣的方法使用,
對(duì)于后臺(tái)異常處理,比如 action不存在,則無(wú)能為力,會(huì)出JavaScript錯(cuò)誤,
錯(cuò)誤處,ext-all.js的代碼
this.decode = function(json) {
//alert(json);
return eval("(" + json + ")")
}
//alert(json);
return eval("(" + json + ")")
}
原因是無(wú)法將上圖(如圖)的字符串轉(zhuǎn)成json字符串,導(dǎo)致無(wú)法判斷走哪個(gè)流程,而正常情況下,返回的是 {success:true,msg:'操作成功!'}或其他。
試了將上面代碼使用try{}catch (){} 還是不能解決JavaScript錯(cuò)誤,我們一般可以避免這種后臺(tái)錯(cuò)誤,如果非得解決的話(huà),不知道有沒(méi)有好的解決方法。
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);
}
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('警告','系統(tǒng)錯(cuò)誤');
}
});
failure:function(form,action){
Ext.Msg.alert('警告','系統(tǒng)錯(cuò)誤');
}
});
后臺(tái)字符串通過(guò)Ext.util.JSON.decode 轉(zhuǎn)成json字符串
不能自動(dòng)根據(jù)json字符串success的值來(lái)選擇流程 ,需要根據(jù)obj.success的值來(lái)判斷走哪個(gè)流程
該failure:可以捕捉系統(tǒng)異常,比如,數(shù)據(jù)未曾提交到后臺(tái)或action 不存在,此時(shí)走failure 流程