asyUI form的submit接口中沒有提供error回調函數,網上一種解決方案是串聯.success(function(){}).error(function(){}),然后通過jqXHR進行統一處理;但是我發現這種方案不論服務端返回正確還是異常,都會調用.error(),而且這樣寫代碼也有點亂。經過兩天摸索,基本找到了解答。
對於post提交的數據,服務端的controller定義為void,不必返回值,通過在controller上注解的方式控制返回的http頭。在這里發現對於easyUI form提交與$.ajax提交,controller返回方式應該有所區別,前者 返回HttpStatus.SUCCESS,后者HttpStatus.NOCONTENT。
在前端easyUI form提交可以通過檢查success(data)的data == ''來處理成功回調,而$.ajax提交則指定error回調函數。
大致代碼如下:
$.ajax({
url:url,//對應controller返回HttpStatus.NOCONTENT,出錯拋出異常
type:'post',
data:data,
success:function(res){},//成功處理
error:function(err){}//錯誤處理
});
$('#fm').form({
url:url,//對應controller返回HttpStatus.SUCCESS,出錯拋出異常
success:function(res){
if(res == ''){
//成功處理
}else{//錯誤處理
}
},
'json'
});