/** * ajax请求的代理类 1、系统在一般情况都使用本类进行ajax请求不在使用原生的或者jQuery的ajax 原因: * 1、本类对异常信息,错误信息进行了信息提示处理 2、本类与服务器端的AjaxResult.java 对应,接收的数据格式是AjaxResult.java * 的json格式数据 * * author :姜友瑶; 2016-06-02 */ var AjaxProxy = { requst: function (option) { // 是否开启遮罩 var params = { url: '', type: 'post', dataType: 'json', data: {}, cache: false, async: true, callback: null, contentType: 'application/json;charset=utf-8', processData: true, showLoad: true, showLoadTip: '提交中', }; params = $.extend(params, option); if (params.contentType && params.contentType.indexOf('application/json') > -1 && params.type == 'post') { params.data = JSON.stringify(params.data) } let loading = {}; if (params.showLoad) { layer.open({type: 2}); } return xhr = $.ajax({ url: params.url, type: params.type, data: params.data, dataType: params.dataType, contentType: params.contentType, processData: params.processData, async: params.async, success: function (data) { if (params.showLoad) { layer.closeAll(); } if (data.status && data.status != '200') { if (data.info) { layer.open({ content: data.info ,skin: 'msg' ,time: 2 //2秒后自动关闭 }); } } else { params.callback && params.callback(data); } }, error: function (XMLHttpRequest, textStatus, errorThrown) { layer.open({ content: '网络连接失败,请稍后重试!' ,skin: 'msg' ,time: 2 //2秒后自动关闭 }); if (params.showLoad) { layer.closeAll(); } }, }); } } var MTools = { padLeftZero: function (str) { return ('00' + str).substr(str.length) }, formatDate: function (date, fmt) { var date = new Date(date); if (/(y+)/.test(fmt)) { fmt = fmt.replace(RegExp.$1, (date.getFullYear() + '').substr(4 - RegExp.$1.length)) } let o = { 'M+': date.getMonth() + 1, 'd+': date.getDate(), 'h+': date.getHours(), 'm+': date.getMinutes(), 's+': date.getSeconds() } for (let k in o) { if (new RegExp(`(${k})`).test(fmt)) { let str = o[k] + '' fmt = fmt.replace(RegExp.$1, RegExp.$1.length === 1 ? str : this.padLeftZero(str)) } } return fmt }, /** 图片在上传的时候,需要在页面嵌套一个jspifram页面 页面处理完图片后服务器返回脚本代码控制父窗口显示图片。 */ upolad : function(img_id, file_id) { if ($("#" + file_id).val() == '') { layer.open({ content: '请先选择要上传的文件!' ,skin: 'msg' ,time: 2 //2秒后自动关闭 }); return; } $("#" + img_id).attr("src", basePath + "/plat/images/loading.gif"); $("#" + img_id).show(); }, /** * 初始化文件上传 * 需要传一个input框的选择器,支持多个文件同时初始化 * 编辑时input框value值应该是图片是src路径,这样控件会自动创建图片回显 * 实现原理:在页面创建一个ifram用于提交文件,每个input框会对应的创建一个隐藏input,把原始 * input的值复制给隐藏input这个input会用于最后的提交。 * 还会创建一个form表单,表单中有一个文件选择框。 * 点击原始input会触发文件选择器的点击事件弹出文件选择框。 * 文件上传后会改变隐藏input框架的value值。 * by jyy */ initImgUpload:function(selected){ //文件类型 var fileTypes="gif,jpg,jpeg,png,bmp"; //最大5M var maxSize=5*1024*1024; //在界面创建一个iframe var iframe = $(''); iframe.css("display", "none"); $("body").append(iframe); $(selected).each(function(i){ //文件类型 var fileTypes="gif,jpg,jpeg,png,bmp"; var $input=$(this); var id=$input.attr("id"); var hideInputId=id+"_hide"; if($input.data("filetypes")){ fileTypes=$input.data("filetypes"); } //创建一个隐藏控件,如果input有值创建一个img if($input.val()!=null &&$input.val().length>0 ){ $input.next("a").after("") $input.before(" ") }else{ $input.before(" ") } //删除控件本身的name属性 $input.removeAttr("name"); //添加点form表单 var form = $('
') form.attr("action",basePath+"/admin/uploadFile/doUpload?callBack=MTools.uploadCallBack&inputId="+id); //创建一个file文件 var file=$(''); form.append(file); //文件改变就提交 file.change(function(){ var filePath = file.val(); var fileName = filePath.substring(filePath.lastIndexOf("\\") + 1, filePath.length); //文件类型判断 var photoExt=fileName.substr(fileName.lastIndexOf(".")+1).toLowerCase();//获得文件后缀名 if(fileTypes.indexOf(photoExt)<0){ layer.open({ content: "允许的文件类型是:"+fileTypes ,skin: 'msg' ,time: 2 //2秒后自动关闭 }); return false; } var obj=file.get(0); var fileSize = 0; fileSize = obj.files[0].size; if(fileSize>=maxSize){ layer.open({ content: "照片最大尺寸为"+maxSize/1024+"KB,请重新选择文件!" ,skin: 'msg' ,time: 2 //2秒后自动关闭 }); return false; } //校验通过开始上传 //改变输入框字符 $input.val(fileName); //创建加载图 if($input.next().next().is("img")){ $input.next().next().attr("src" ,basePath+"/images/loadingbig.gif"); }else{ $input.next("a").after("") } //提交表单 form.submit(); }); // 绑定事件 $input.click(function(){ file.trigger("click"); }); $input.next("a").click(function(){ file.trigger("click"); }); //把组件添加到文档中 $("body").append(form); }); }, /** * 删除上传图片 */ removeUpload:function(node,inputId){ $(node).remove(); var textId=inputId.substring(0,inputId.indexOf("_")); $("#"+textId).val(""); $("#"+inputId).val(""); }, /** * 上传服务器回调函数 */ uploadCallBack:function(id,path){ console.log(path); $("#"+id+"_hide").val(path); $("#"+id).next().next().attr("src" ,path); $("#showImgUrl").hide(); }, /** 页面定向 */ redirect : function(url) { window.location.href = url; }, }