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