Ext.Ajax.request和Ext.form.action.Submit都是用success,failure兩個方法來處理傳回值的。
但是,他們之間有很大的差别。通過在項目中的研究,暫時得出了以下結論,如有不同看法請指出。
Ext.Ajax.request
首先是Ext.Ajax.request,他有兩個處理函數success和failure,包含response, opts兩個參數。
其中最主要的為response,裡面有以下屬性
其中最主要的
- status:http的狀态
- responseText:從server傳回的json資料
作為Ext.Ajax.request的success和failure,他們之間的差別為
- success:http status為200(正常結束)的處理
- failure:http status不為200(非正常結束)的處理,包括500等
其中最容易搞混的就是當傳回json中有{success: true}的時候,這裡和Ext.form.action.Submit完全不同,
不以傳回資料中的success: true來作為判斷條件。
Ext.form.action.Submit
其次是Ext.form.action.Submit,他也有兩個處理函數success和failure,包含form和action兩個參數。
但是就是這兩個處理函數,感覺Extjs給挖了一個巨大的坑。
在整個Form裡面包含filefield和不包含的情況下,産生了完全是2種不同的結果。
由于想在Extjs端做一個完整的傳回結果處理,以及異常的全局處理,
特别是在包含filefield的情況下的500處理,花費了特别多的時間。
首先是在不包含filefield的情況下
這個時候的處理比較簡單:
- 在正常傳回背景資料的情況下
傳回的json裡面要包含{success:true}或{success:false}
這樣Extjs就會根據success是等于true還是false來選擇執行處理函數success還是failure
- 在出現500等的異常的情況下
正常傳回到failure函數裡面
并且可以在回調函數參數action.response裡面找到status以及其他的資訊,如request
其次是在包含filefield的情況下
- 在正常傳回背景資料的情況下
轉載于:https://www.cnblogs.com/zuoyetianqi/archive/2013/05/09/3070269.html