zoukankan      html  css  js  c++  java
  • 【javascript】common js

      1 function Common() { };
      2 Common.prototype = function () {
      3     //基于layer的框架(loading和alert部分是使用的layer弹层)
      4     return {
      5         alert: function (msg) {
      6             layer.msg(msg, { time: 1000 });
      7         },
      8         confirm: function (msg, succ, cancel) {
      9             layer.confirm(msg, {
     10                 btn: ['确定', '取消'] //按钮
     11             }, succ, cancel);
     12         },
     13         //加载中。。。
     14         loading: function (msg) {
     15             if (window.layer) {
     16                 layer.load()
     17             }
     18         },
     19         //关闭当前加载
     20         closeloading: function () {
     21             layer.closeAll();
     22         },
     23         //基于jquery的ajax
     24         ajax: function (setting) {
     25             if (!setting.dataType) setting.dataType = "json";
     26             if (!setting.type) setting.type = "post";
     27             $.ajax({
     28                 url: setting.url,
     29                 type: setting.type,
     30                 dataType: setting.dataType,
     31                 data: setting.data,
     32                 success: function (data) {
     33                     if (setting.success)
     34                         setting.success(data);
     35                 },
     36                 error: setting.error
     37             })
     38         },
     39         //httprequest ajax H5使用
     40         //setting参数
     41         //beforeSend(xhr)发送之前,xhr为xmlhttprequest
     42         //success 发送成功
     43         //error
     44         ajaxHttp: function (setting) {
     45             if (!setting) return;
     46             var xhr = new XMLHttpRequest();
     47             xhr.onreadystatechange = function () {
     48                 if (xhr.readyState == 4) {
     49                     if (xhr.status == 200) {
     50                         setting.success(xhr.responseText);
     51                     } else {
     52                         setting.error(xhr.responseText);
     53                     }
     54                 }
     55             }
     56             if (!setting.type) setting.type = "post";
     57             xhr.open(setting.type, setting.url);
     58             xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8");
     59             if (setting.beforeSend) setting.beforeSend(xhr);//
     60             if (setting.data)
     61                 xhr.send(a(setting.data));
     62             else
     63                 xhr.send();
     64             //格式化数据
     65             function a(data) {
     66                 var param = function (obj) {
     67                     var query = '';
     68                     var name, value, fullSubName, subName, subValue, innerObj, i;
     69 
     70                     for (name in obj) {
     71                         value = obj[name];
     72 
     73                         if (value instanceof Array) {
     74                             for (i = 0; i < value.length; ++i) {
     75                                 subValue = value[i];
     76                                 fullSubName = name + '[' + i + ']';
     77                                 innerObj = {};
     78                                 innerObj[fullSubName] = subValue;
     79                                 query += param(innerObj) + '&';
     80                             }
     81                         } else if (value instanceof Object) {
     82                             for (subName in value) {
     83                                 subValue = value[subName];
     84                                 fullSubName = name + '[' + subName + ']';
     85                                 innerObj = {};
     86                                 innerObj[fullSubName] = subValue;
     87                                 query += param(innerObj) + '&';
     88                             }
     89                         } else if (value !== undefined && value !== null) {
     90                             query += encodeURIComponent(name) + '='
     91                                 + encodeURIComponent(value) + '&';
     92                         }
     93                     }
     94 
     95                     return query.length ? query.substr(0, query.length - 1) : query;
     96                 };
     97                 return param(data);
     98             }
     99         },
    100         query: function (name) {
    101             var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
    102             var s = window.location.search||window.location.hash.substr(1);//这块兼容了 angularjs 的#?a=xxx&b=xxx 的参数规则
    103             var r = s.substr(1).match(reg);
    104             if (r != null)
    105                return unescape(r[2]);
    106             return null;
    107         },
    108         ///相当于jquery的ready
    109         ready: function (a) {
    110             document.onreadystatechange = function () {
    111                 if (document.readyState == "complete") {
    112                     if (a) a();
    113                 }
    114             }
    115         },
    116     }
    117 }();
    118 //基于jq的通用部分
    119 Common.prototype.jquery = function () {
    120     return {
    121         //调用示例
    122         exp: function () {
    123             com.jquery.initFileUpload({
    124                 a: $file,
    125                 b: function (pic, pic_2, pic_4, pic_6) {//上传成功后返回 4中格式的图片
    126                     setTimeout(function () {
    127                         $file.prev().prop("src", pic);
    128                         com.closeloading();
    129                     }, 1000)
    130                 },
    131                 c: function (a, b) {//图片选择完毕之后,b.submit()就是把图片上传的意思
    132                     com.loading();
    133                     b.submit();
    134                 }
    135             });
    136         },
    137         initFileUpload: function (setting) {
    138             if (!setting) com.alert("缺少参数setting");
    139             if (!setting.a) com.alert("缺少参数file input");
    140             var a = setting.a;
    141             var b = setting.b;//success
    142             var c = setting.c;
    143             var url = "http://114.112.101.70:91/api/uploadimage/eggworld_product_0_0_0_true";
    144             var fp = a.fileupload({
    145                 url: url,
    146                 dataType: 'json',
    147                 forceIframeTransport: true,
    148                 autoUpload: setting.autoUpload ? setting.autoUpload : true,
    149                 redirect: setting.redirect ? setting.redirect : "http://" + window.location.host + "/Scripts/result.html",//这个是fileupload插件的一个支持跨域的html
    150                 add: function (e, data) {//文件选择完毕
    151                     if (c) c(e, data);
    152                     else {
    153                         if (e.isDefaultPrevented()) {
    154                             return false;
    155                         }
    156                         if (data.autoUpload || (data.autoUpload !== false &&
    157                                 $(this).fileupload('option', 'autoUpload'))) {
    158                             data.process().done(function () {
    159                                 data.submit();
    160                             });
    161                         }
    162                     }
    163                 },
    164                 done: function (e, res) {//文件上传完毕
    165                     console.log(res)
    166                     if (res.result.Code == 200) {
    167                         var suffix = res.result.Datas[0].ImgUrl.substring(res.result.Datas[0].ImgUrl.lastIndexOf('.'));
    168                         var picUrl = res.result.Datas[0].ImgUrl.replace(suffix, suffix);
    169                         var picUrl_6 = res.result.Datas[0].ImgUrl.replace(suffix, '_6' + suffix);
    170                         var picUrl_4 = res.result.Datas[0].ImgUrl.replace(suffix, '_4' + suffix);
    171                         var picUrl_2 = res.result.Datas[0].ImgUrl.replace(suffix, '_2' + suffix);
    172                         if (b) b(picUrl, picUrl_2, picUrl_4, picUrl_6, setting.tag);
    173                     }
    174                 },
    175                 fail: function () {
    176                     if (setting.d) setting.d();
    177                 },
    178             });//end fileupload
    179         },
    180     };
    181 }();
    182 //数据绑定模板
    183 Common.prototype.tmpl = function () {
    184     return {
    185         //普通参数直接绑定{createtime}
    186         //表达式支持函数调用{model.getDate($createtime,$updatetiem)}
    187         //a 模板的html
    188         //b list.item
    189         getTmpl: function (a, b) {
    190             //console.log(b)
    191             var regKK = new RegExp("{(.*?)}", "g");
    192             var c = a.match(regKK);
    193 
    194             for (var i = 0; i < c.length; i++) {
    195                 c[i] = c[i].replace(/{/g, "").replace(/}/g, "");
    196             }
    197             for (var i = 0; i < c.length; i++) {
    198                 var tempRegItem = c[i];
    199                 //var regFuc = new RegExp(".+?((d+?))", "g");
    200                 var regFuc = new RegExp("\((.| )+?\)", "g");
    201                 if (regFuc.test(tempRegItem)) {
    202                     //function 
    203                     var ar1 = tempRegItem.split("(")[0];//function name
    204                     //console.log(tempRegItem);
    205                     var parastr = tempRegItem.split("(")[1].split(")")[0];
    206                     var ar2 = parastr.split(",");//参数数组
    207 
    208                     for (var aritem in ar2) {
    209                         aritem = ar2[aritem];
    210                         var treg = new RegExp("\" + aritem, "g");
    211                         if (b[aritem.replace(/$/g, "")]) {
    212                             parastr = parastr.replace(treg, "'" + b[aritem.replace(/$/g, "")] + "'");
    213                         } else {
    214                             parastr = parastr.replace(treg, "''");
    215                         }
    216                     }
    217                     var fucstr = ar1 + "(" + parastr + ")";
    218                     //console.log(fucstr);
    219                     var r = eval(fucstr);
    220                     a = a.replace("{" + tempRegItem + "}", r);
    221                 }
    222                 else if (b[tempRegItem]) {
    223                     var reg = new RegExp("{" + tempRegItem + "}", "g");
    224                     a = a.replace(reg, b[tempRegItem]);
    225                 } else {
    226                     var reg = new RegExp("{" + tempRegItem + "}", "g");
    227                     a = a.replace(reg, " ");
    228                 }
    229             }
    230             return a;
    231         },
    232         getTmpls: function (a, b) {
    233             var str = "";
    234             for (var i = 0; i < b.length; i++) {
    235                 str += this.getTmpl(a, b[i]);
    236             }
    237             return str;
    238         }
    239     }
    240 }();
    241 
    242 Common.prototype.word = function () {
    243     return {
    244         errorMsg: "网络错误,请稍后再试"
    245     };
    246 }();
    247 
    248 Common.prototype.modelPage = function () {
    249     return {//分页控件
    250         //调用示例
    251         codeExp: function () {
    252             common.modelPage.initPage({
    253                 pagerowcount: 215,//数据总共多少条
    254                 pageindex: 1,//当前第几页
    255                 pagesize: 10,//一页多少条
    256                 domid: 'pageid',
    257                 pageclick: function (pageindex) { }//分页点击事件
    258             })
    259         },
    260         //分页 配合梅珍写的样式使用
    261         initPage: function (setting) {
    262             if (setting.pagerowcount <= setting.pageindex * setting.pagesize) {
    263                 return;
    264             }
    265             this.pagecontent(setting);
    266         },
    267         pagecontent: function (setting) {
    268             if (!setting.pageindex) setting.pageindex = 1;
    269             if (!setting.pagesize) setting.pagesize = 10;
    270             if (!setting.showcount) setting.showcount = 5;
    271             if (!setting.pagerowcount) alert("缺少参数pagerowcount");
    272             if (!setting.domid) alert("缺少参数domid");
    273             if (!setting.pageclick) alert("缺少回调函数pageclick");
    274 
    275             if (setting.pagerowcount) {
    276                 setting.pagecount = parseInt(setting.pagerowcount % setting.pagesize > 0 ? (setting.pagerowcount / setting.pagesize) + 1 : setting.pagerowcount / setting.pagesize);
    277             }
    278             var itemthis = this;
    279             var div_page = document.createElement("div");
    280             div_page.className = "page";
    281             div_page.id = setting.domid;
    282             var div_pageIn = document.createElement("div");
    283             div_pageIn.className = "pageIn";
    284 
    285             this.pageset(setting, div_pageIn, itemthis);
    286 
    287             div_page.appendChild(div_pageIn);
    288             var dom = document.getElementById(setting.domid);
    289             dom.parentElement.replaceChild(div_page, dom);
    290         },
    291         pageset: function (setting, div_pageIn, itemthis) {
    292             /*处理分页参数*/
    293             if (setting.pageindex > 1) {
    294                 var link_a = document.createElement("a");
    295                 link_a.innerText = "首页";
    296                 link_a.onclick = function () { itemthis.pageclick.call(itemthis, setting, 1); };
    297                 div_pageIn.appendChild(link_a);
    298                 var link_a = document.createElement("a");
    299                 link_a.innerText = "上一页";
    300                 if (setting.pageindex <= 1) link_a.disabled = "disabled";
    301                 else
    302                     link_a.onclick = function () { itemthis.pageclick.call(itemthis, setting, setting.pageindex - 1); };
    303                 div_pageIn.appendChild(link_a);
    304             }
    305 
    306             //var tempshowcount = setting.pagecount < setting.showcount ? setting.pagecount : setting.showcount;
    307             for (var i = 1; i <= setting.showcount; i++) {
    308                 var link_a = document.createElement("a");
    309                 link_a.innerText = parseInt((setting.pageindex - 1) / setting.showcount) * setting.showcount + i;
    310                 if (link_a.innerText > setting.pagecount) break;
    311                 if (link_a.innerText == setting.pageindex) {
    312                     link_a.className = "now";
    313                 }
    314 
    315                 var pageitem = this;
    316 
    317                 link_a.onclick = function (pagei) {
    318                     return function () {
    319                         itemthis.pageclick.call(itemthis, setting, pagei);
    320                     }
    321                 }(link_a.innerText);
    322                 div_pageIn.appendChild(link_a);
    323             }
    324 
    325             if (setting.pageindex < setting.pagecount) {
    326                 var link_a = document.createElement("a");
    327                 link_a.innerText = "下一页";
    328                 if (setting.pageindex >= setting.pagecount) link_a.disabled = "disabled";
    329                 else link_a.onclick = function () { itemthis.pageclick.call(itemthis, setting, setting.pageindex + 1); };
    330                 div_pageIn.appendChild(link_a);
    331 
    332                 var link_a = document.createElement("a");
    333                 link_a.innerText = "最后一页";
    334                 link_a.onclick = function () { itemthis.pageclick.call(itemthis, setting, setting.pagecount); };
    335                 div_pageIn.appendChild(link_a);
    336             }
    337             /*处理分页参数END*/
    338         },
    339         pageclick: function (setting, page) {
    340             page = parseInt(page);
    341             setting.pageindex = page;
    342             this.pagecontent(setting);
    343             setting.pageclick(page);
    344         },
    345         loadCss: function () {
    346             var dom = document.createElement("style");
    347             dom.type = "text/css";
    348             dom.innerText = ".page{100%;height:auto;margin-top:20px}.page .pageIn{620px;margin:0 auto}.page .pageIn a{display:inline-block;padding:0 15px;height:40px;border:1px solid #ccc;margin-right:3px;line-height:40px;color:#555;font-size:14px}.page .pageIn .now{background:#2dc3e8;border:1px solid #2dc3e8;color:#fff}";
    349             window.document.body.appendChild(dom);
    350         },
    351     }
    352 }();
    353 
    354 //返回
    355 Common.prototype.rtModel = function () {
    356     return {
    357         rtuname: "ReturnUrl",
    358         rtuvalue: function () {
    359             return com.query(this.rtuname);
    360         },
    361         back: function (url) {
    362             if (this.rtuvalue()) {
    363                 window.location = this.rtuvalue();
    364             } else if (url) {
    365                 window.location = url;
    366             } else {
    367                 window.history.back();
    368             }
    369         }
    370     };
    371 }();
    372 var Com = new Common();
    373 var com = Com;
    374 var common = Com;
    375 com.queryString = com.query;
  • 相关阅读:
    Advanced Installer文件和文件夹页面中的临时文件操作
    celery使用方法
    网站高并发之道
    大话程序猿眼里的高并发
    StringTokenizer类的使用
    linux下查看最消耗CPU、内存的进程
    分享10条PHP性能优化的小技巧,帮助你更好的用PHP开发:
    json 除去转义字符以及查看json错误
    关于 redis、memcache、mongoDB 的对比
    QPS 与 TPS 简介
  • 原文地址:https://www.cnblogs.com/zspbolg/p/6268645.html
Copyright © 2011-2022 走看看