1. 程式人生 > >easyUI form提交與springMVC互動時服務端返回的錯誤處理

easyUI form提交與springMVC互動時服務端返回的錯誤處理

easyUI 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'
});


另外,easyUI form提交最好指定conentType為json。