一个简单的load动作,如果简单用任何一个js框架实现
startloding(); new ajax({ url : 'test.php', compete : function() { stoploading() }, success : function(data) { try { var obj = json_decode(data); } catch(e) { //服务异常,未返回json造成异常 error('服务器异常'); return; } //正常的业务逻辑错误 if ( json['code'] !== 0 ) { error(json['desc']); return; } ... }, error : function() { //网络请求失败造成异常 error('网络异常'); } });
而一个业务框架对ajax再次包装,成为一个action
new action({ action : 'load', action_name : '加载', url : 'test.php' }); api.add_action('load_start', startloading); api.add_action('load_complete', stoploading); //这里的成功不是ajax成功,而是判定json['code']之后action真正的成功,这就要求所有action需要有统一的成功判定标准,和json包装格式 api.add_action('load_success', function(msg, data){ .... }); //这里没有添加异常处理,因为没有特殊需要,所以action会执行默认的错误处理,可能是一个弹窗
不仅仅是节省了代码,后者有更好的可读性,load动作本身也具有了更好的重用性
具体的框架代码已经在用,还不是很完美,待贴~
