基于ajax再封装
来源:互联网 发布:linux挂载文件夹到mnt 编辑:程序博客网 时间:2024/06/05 22:42
ajax再封装
针对项目中简化ajax代码以及处理异常,对ajax再封装。
1.实现ajax提交,参数缺省
2.实现自定义参数opt的对ajax参数的继承覆盖
3.实现服务器返回的数据类型标准性
var sesxhAjax = { // 请求返回值为json格式 AjaxToDo:function(url,para,callback){ var arr = getParam(arguments[3],arguments[4],arguments[5]); var async = arr[0]; var fault= arr[1]; var Option= arr[2]; var settings = { url: url, contentType: "application/x-www-form-urlencoded;charset=UTF-8", type: "POST", data: para, async:async, success: function(d){ if(d[sesxhCode.statusCode.statusKey]==sesxhCode.statusCode.success){ callback(d); }else{ if(fault !=""){ fault(d); }else{ errorMsg(d[sesxhCode.statusCode.statusValue]); } } }, error: function(XMLHttpRequest, textStatus, errorThrown){ alert("请求的url出错,请检查!"+url); } } if(typeof Option === 'object'){ jQuery.extend(settings, Option); } $.ajax(settings); }, // 请求返回值为page AjaxHtmlToDo:function(url,para,callback){ var arr = getParam(arguments[3],arguments[4],arguments[5]); var async = arr[0]; var fault= arr[1]; var Option= arr[2]; var settings = { url: url, contentType: "application/x-www-form-urlencoded;charset=UTF-8", type: "POST", data: para, async:async, success: function(d){ var flag = isJSON(d); if(flag){ if(fault !=""){ fault(d); }else{ errorMsg(d[sesxhCode.statusCode.statusValue]) } }else{ callback(d); } }, error: function(XMLHttpRequest, textStatus, errorThrown){ alert("请求的url出错,请检查!"+url); } } if(typeof Option === 'object'){ jQuery.extend(settings, Option); } $.ajax(settings); }};function errorMsg(title){ swal({ title : title, type : "warning" }); }function isJSON(str) { try { JSON.parse(str); return true; } catch(e) { console.log(e); return false; } }function getParam(arg3,arg4,arg5){ var async = true; var fault =""; var Option =""; var a3= arg3 || ""; var a4= arg4 || ""; var a5= arg5 || ""; var arr=[a3,a4,a5]; for(var i =0;i<arr.length;i++){ if(typeof arr[i] == 'boolean'){ async = arr[i]; }else if(typeof arr[i] == 'object'){ Option = arr[i]; }else if(typeof arr[i] == 'function'){ fault = arr[i]; } } var newarr = [async,fault,Option]; return newarr;} //http://www.jb51.net/article/45365.htm, //http://blog.csdn.net/nohero1/article/details/41517163 //执行匿名函数,$.ajax,入参为jquery对象 (function($){ //备份jquery的ajax方法 var _ajax=$.ajax; //jquery的ajax方法 $.ajax=function(opt){ //备份opt中error和success方法 var fn = { error:function(XMLHttpRequest, textStatus, errorThrown){}, success:function(data, textStatus){} } if(opt.error){ fn.error=opt.error; } if(opt.success){ fn.success=opt.success; } //扩展error和success方法 var _opt = $.extend(opt,{ error:function(XMLHttpRequest, textStatus, errorThrown){ //错误方法增强处理 //TODO console.log("【错误类型】:"+XMLHttpRequest.status+"-----【状态码】:"+XMLHttpRequest.readyState+"------【错误信息】:"+textStatus); fn.error(XMLHttpRequest, textStatus, errorThrown); }, success:function(data, textStatus){ //成功回调方法增强处理 //TODO //data... fn.success(data, textStatus); } }); return _ajax(_opt); }; })(jQuery); ----------------------------code对照表---------------------------- var sesxhCode = { statusCode: { success: 000,//成功状态码 statusKey: "statusKey",//状态码 key statusValue:"statusValue", //状态码内容 key },}
阅读全文
0 0
- 基于ajax再封装
- 基于jquery的ajax封装
- 基于IHttpHandler的Ajax封装应用
- 基于jquery.ajax的进一步封装
- 基于jquery的ajax方法的二次封装
- vue 组件的封装之基于axios的ajax请求
- 封装Ajax
- Ajax封装
- ajax封装
- ajax封装
- ajax封装
- 封装ajax
- Ajax封装
- ajax封装
- Ajax封装
- Ajax封装
- ajax 封装
- Ajax封装
- window中对ubuntu通过samba共享出来的文件没有写权限/无法修改
- PHP中计算字符串相似度的函数代码
- HTML5按钮元素新属性formaction,formenctype等简介
- cache释疑
- spark的数据倾斜问题的解决
- 基于ajax再封装
- git rebase 修改最近作者注释
- PL/SQL块基本概念及示例
- 2017 优秀博文
- Rumor谣传路由协议
- dokuwiki如何设置登录
- 基础整理-循环
- zcmu-1962
- react组件生命周期