/** * @fileoverview 上传方式类的基类 * @author: 剑平(明河),紫英 **/ KISSY.add('gallery/form/1.3/uploader/type/base',function(S, Node, Base) { var EMPTY = '',$ = Node.all; /** * @name UploadType * @class 上传方式类的基类,定义通用的事件和方法,一般不直接监听此类的事件 * @constructor * @extends Base * @param {Object} config 组件配置(下面的参数为配置项,配置会写入属性,详细的配置说明请看属性部分) * @param {String} config.action *,服务器端路径 * @param {Object} config.data 传送给服务器端的参数集合(会被转成hidden元素post到服务器端) * */ function UploadType(config) { var self = this; //调用父类构造函数 UploadType.superclass.constructor.call(self, config); } S.mix(UploadType, /** @lends UploadType*/{ /** * 事件列表 */ event : { //开始上传后触发 START : 'start', //停止上传后触发 STOP : 'stop', //成功请求 SUCCESS : 'success', //上传失败后触发 ERROR : 'error' } }); /** * @name UploadType#start * @desc 开始上传后触发 * @event */ /** * @name UploadType#stop * @desc 停止上传后触发 * @event */ /** * @name UploadType#success * @desc 上传成功后触发 * @event */ /** * @name UploadType#error * @desc 上传失败后触发 * @event */ //继承于Base,属性getter和setter委托于Base处理 S.extend(UploadType, Base, /** @lends UploadType.prototype*/{ /** * 上传文件 */ upload : function() { }, /** * 停止上传 */ stop : function(){ }, /** * 处理服务器端返回的结果集 * @private */ _processResponse:function(responseText){ var self = this; var filter = self.get('filter'); var result = {}; if(filter != EMPTY) responseText = filter.call(self,responseText); //格式化成json数据 if(S.isString(responseText)){ try{ result = S.JSON.parse(responseText); result = self._fromUnicode(result); }catch(e){ var msg = responseText + ',返回结果集responseText格式不合法!'; S.log(msg); self.fire('error',{status:-1, result:{msg:msg}}); } }else if(S.isObject(responseText)){ result = self._fromUnicode(responseText); } S.log('服务器端输出:' + S.JSON.stringify(result)); return result; }, /** * 将unicode的中文转换成正常显示的文字,(为了修复flash的中文乱码问题) * @private */ _fromUnicode:function(data){ if(!S.isObject(data)) return data; _each(data); function _each(data){ S.each(data,function(v,k){ if(S.isObject(data[k])){ _each(data[k]); }else{ data[k] = S.isString(v) && S.fromUnicode(v) || v; } }); } return data; } }, {ATTRS : /** @lends UploadType.prototype*/{ /** * 服务器端路径 * @type String * @default "" */ action : {value : EMPTY}, /** * 传送给服务器端的参数集合(会被转成hidden元素post到服务器端) * @type Object * @default {} */ data : {value : {}}, /** * 服务器端返回的数据的过滤器 * @type Function * @default '' */ filter:{ value:EMPTY } }}); return UploadType; }, {requires:['node','base']});