天天看點

Ext.Ajax.request以及Ext.form.action.Submit使用總結(Ext版本4.2.0)Ext.Ajax.requestExt.form.action.Submit

Ext.Ajax.request和Ext.form.action.Submit都是用success,failure兩個方法來處理傳回值的。

但是,他們之間有很大的差别。通過在項目中的研究,暫時得出了以下結論,如有不同看法請指出。

Ext.Ajax.request

首先是Ext.Ajax.request,他有兩個處理函數success和failure,包含response, opts兩個參數。

其中最主要的為response,裡面有以下屬性

Ext.Ajax.request以及Ext.form.action.Submit使用總結(Ext版本4.2.0)Ext.Ajax.requestExt.form.action.Submit

其中最主要的

  • 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