【JavaScript学习】JavaScript 常用工具类封装

偏执的太偏执、 2022-12-09 14:54 284阅读 0赞

文章目录

  • 1、JavaScript 常用工具类封装
      • (1)获得浏览器地址所有参数
      • (2)将json转为get参数
      • (3)格式校验工具类
      • (4)数组操作工具类
      • (5)表单取值工具类
      • (6)时间转换工具类
      • (7)密码加密工具类
      • (8)文件上传工具类
  • 微信公众号

1、JavaScript 常用工具类封装

(1)获得浏览器地址所有参数

  1. // 获得浏览器地址所有参数
  2. function getQueryString() {
  3. var qs = location.search.substr(1), // 获取url中"?"符后的字串
  4. args = { }, // 保存参数数据的对象
  5. items = qs.length ? qs.split("&") : [], // 取得每一个参数项
  6. item = null,
  7. len = items.length;
  8. for(var i = 0; i < len; i++) {
  9. item = items[i].split("=");
  10. var name = decodeURIComponent(item[0]),
  11. value = decodeURIComponent(item[1]);
  12. if(name) {
  13. args[name] = value;
  14. }
  15. }
  16. return args;
  17. }

(2)将json转为get参数

  1. // 将json转为get参数
  2. function getParamByJson(json) {
  3. return Object.keys(json).map(function (key) {
  4. return encodeURIComponent(key) + "=" + encodeURIComponent(json[key]);
  5. }).join("&");
  6. }

(3)格式校验工具类

tellsea-validator.js

  1. /** * @author tellsea * @version v0.0.1 * @description javascript # 格式校验工具类 * @date: 2019/7/5 15:30 */
  2. var validator = {
  3. /** * 非空验证 * * @param val * @returns {boolean} */
  4. isEmpty: function isEmpty(val) {
  5. if (val == undefined || val == null || val == '' || val.length == 0) {
  6. return true;
  7. } else {
  8. return false;
  9. }
  10. },
  11. /** * 邮箱验证 * * @param val * @returns {boolean} */
  12. isEmail: function isEmail(val) {
  13. var reg = /^([a-zA-Z]|[0-9])(\w|\-)+@[a-zA-Z0-9]+\.([a-zA-Z]{2,4})$/;
  14. return reg.test(val);
  15. },
  16. /** * 身份证号码验证 * * @param val * @returns {boolean} * 身份证正则表达式(15位):isIDCard1=/^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$/; * 身份证正则表达式(18位):isIDCard2=/^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{4}$/; */
  17. isCard: function isCard(val) {
  18. var reg = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/;
  19. return reg.test(val);
  20. },
  21. /** * 手机号码 * * @param val * @returns {boolean} */
  22. isPhone: function isPhone(val) {
  23. var reg = /^[1][3,4,5,6,7,8,9][0-9]{9}$/;
  24. return reg.test(val);
  25. },
  26. /** * 固定电话 * * @param val * @returns {boolean} */
  27. isLandline: function isLandline(val) {
  28. var reg = /^(\(\d{3,4}\)|\d{3,4}-|\s)?\d{7,14}$/;
  29. return reg.test(val);
  30. },
  31. /** * 手机号码或者固定电话 * * @param val * @returns {boolean} */
  32. isPhoneOrLandline: function isPhoneOrLandline(val) {
  33. var reg = /^((0\d{2,3}-\d{7,8})|(1[3456789]\d{9}))$/;
  34. return reg.test(val);
  35. },
  36. /** * 邮编 * * @param val * @returns {boolean} */
  37. isPostalcode: function isPostalcode(val) {
  38. var reg = /^[1-9][0-9]{5}$/;
  39. return reg.test(val);
  40. },
  41. /** * 银行卡号,15,16,19位 * * @param val * @returns {boolean} */
  42. isBank: function isBank(val) {
  43. var reg = /^([1-9]{1})(\d{14}|\d{18}|\d{15})$/;
  44. return reg.test(val);
  45. }
  46. };

(4)数组操作工具类

tellsea-array-utis.js

  1. var arrayUtis = {
  2. /** * 删除数组中的元素 * * @param array 数组 * @param del 需要删除的元素 * 1、删除数组中的某个元素,首先需要确定需要获得删除元素的索引值 * 2、找到相对应的索引值后,根据索引值删除数组中该元素对应的值 */
  3. removeElement: function removeElement(arr, del) {
  4. Array.prototype.indexOf = function (val) {
  5. for (var i = 0; i < this.length; i++) {
  6. if (this[i] == val) {
  7. return i;
  8. }
  9. }
  10. return -1;
  11. };
  12. Array.prototype.remove = function (val) {
  13. var index = this.indexOf(val);
  14. if (index > -1) {
  15. this.splice(index, 1);
  16. }
  17. };
  18. arr.remove(del);
  19. },
  20. /** * 根据一个父数组删除子数组相对应的元素 * * @param arr1 父数组 * @param arr2 子数组 * @returns {*} */
  21. removePoint: function removePoint(arr1, arr2) {
  22. for (var i = 0; i < arr2.length; i++) {
  23. for (var j = 0; j < arr1.length; j++) {
  24. if (arr2[i] == arr1[j]) {
  25. var index = arr1.indexOf(arr1[j]);
  26. arr1.splice(index, 1);
  27. }
  28. }
  29. }
  30. return arr1;
  31. }
  32. };

(5)表单取值工具类

tellsea-form.js

  1. /** * 序列化表单数据 */
  2. $.fn.serializeJson = function () {
  3. var serializeObj = { };
  4. var array = this.serializeArray();
  5. $(array).each(function () {
  6. if (serializeObj[this.name]) {
  7. if ($.isArray(serializeObj[this.name])) {
  8. serializeObj[this.name].push(this.value);
  9. } else {
  10. serializeObj[this.name] = [serializeObj[this.name], this.value];
  11. }
  12. } else {
  13. serializeObj[this.name] = this.value;
  14. }
  15. });
  16. return serializeObj;
  17. };

(6)时间转换工具类

tellsea-date.js

  1. /** * 把Date转化为指定格式的String(Format) * @param fmt * @returns {void | string} * @constructor * 使用案例:new Date().Format('yyyy-MM-dd HH:mm:ss'); */
  2. Date.prototype.Format = function (fmt) {
  3. var o = {
  4. "M+": this.getMonth() + 1,
  5. "d+": this.getDate(),
  6. "H+": this.getHours(),
  7. "m+": this.getMinutes(),
  8. "s+": this.getSeconds(),
  9. "q+": Math.floor((this.getMonth() + 3) / 3),
  10. "S": this.getMilliseconds()
  11. };
  12. if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
  13. for (var k in o)
  14. if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
  15. return fmt;
  16. };
  17. /** * 得到当前时间 yyyyMMddHHmm */
  18. function fmtDateMin() {
  19. var myDate = new Date();
  20. var year = myDate.getFullYear();
  21. var month = myDate.getMonth() + 1;
  22. var date = myDate.getDate();
  23. var h = myDate.getHours();
  24. var m = myDate.getMinutes();
  25. var s = myDate.getSeconds();
  26. var now = year + '' + conver(month) + '' + conver(date) + '' + conver(h) + '' + conver(m);
  27. return now;
  28. }
  29. //日期时间处理
  30. function conver(s) {
  31. return s < 10 ? '0' + s : s;
  32. }

(7)密码加密工具类

md5.js

  1. function array(n) {
  2. for (i = 0; i < n; i++) this[i] = 0;
  3. this.length = n;
  4. }
  5. /* Quelques fonctions fondamentales doivent ��otre transform��|es ���� cause * d'erreurs Javascript. * Essayez par exemple de calculer 0xffffffff >> 4 ... * Les fonctions utilis��|es maintenant sont il est vrai plus lentes que les * fonctions originales mais elles fonctionnent. */
  6. function integer(n) {
  7. return n % (0xffffffff + 1);
  8. }
  9. function shr(a, b) {
  10. a = integer(a);
  11. b = integer(b);
  12. if (a - 0x80000000 >= 0) {
  13. a = a % 0x80000000;
  14. a >>= b;
  15. a += 0x40000000 >> (b - 1);
  16. } else
  17. a >>= b;
  18. return a;
  19. }
  20. function shl1(a) {
  21. a = a % 0x80000000;
  22. if (a & 0x40000000 == 0x40000000) {
  23. a -= 0x40000000;
  24. a *= 2;
  25. a += 0x80000000;
  26. } else
  27. a *= 2;
  28. return a;
  29. }
  30. function shl(a, b) {
  31. a = integer(a);
  32. b = integer(b);
  33. for (var i = 0; i < b; i++) a = shl1(a);
  34. return a;
  35. }
  36. function and(a, b) {
  37. a = integer(a);
  38. b = integer(b);
  39. var t1 = (a - 0x80000000);
  40. var t2 = (b - 0x80000000);
  41. if (t1 >= 0)
  42. if (t2 >= 0)
  43. return ((t1 & t2) + 0x80000000);
  44. else
  45. return (t1 & b);
  46. else if (t2 >= 0)
  47. return (a & t2);
  48. else
  49. return (a & b);
  50. }
  51. function or(a, b) {
  52. a = integer(a);
  53. b = integer(b);
  54. var t1 = (a - 0x80000000);
  55. var t2 = (b - 0x80000000);
  56. if (t1 >= 0)
  57. if (t2 >= 0)
  58. return ((t1 | t2) + 0x80000000);
  59. else
  60. return ((t1 | b) + 0x80000000);
  61. else if (t2 >= 0)
  62. return ((a | t2) + 0x80000000);
  63. else
  64. return (a | b);
  65. }
  66. function xor(a, b) {
  67. a = integer(a);
  68. b = integer(b);
  69. var t1 = (a - 0x80000000);
  70. var t2 = (b - 0x80000000);
  71. if (t1 >= 0)
  72. if (t2 >= 0)
  73. return (t1 ^ t2);
  74. else
  75. return ((t1 ^ b) + 0x80000000);
  76. else if (t2 >= 0)
  77. return ((a ^ t2) + 0x80000000);
  78. else
  79. return (a ^ b);
  80. }
  81. function not(a) {
  82. a = integer(a);
  83. return (0xffffffff - a);
  84. }
  85. /* D��|but de l'algorithme */
  86. var state = new array(4);
  87. var count = new array(2);
  88. count[0] = 0;
  89. count[1] = 0;
  90. var buffer = new array(64);
  91. var transformBuffer = new array(16);
  92. var digestBits = new array(16);
  93. var S11 = 7;
  94. var S12 = 12;
  95. var S13 = 17;
  96. var S14 = 22;
  97. var S21 = 5;
  98. var S22 = 9;
  99. var S23 = 14;
  100. var S24 = 20;
  101. var S31 = 4;
  102. var S32 = 11;
  103. var S33 = 16;
  104. var S34 = 23;
  105. var S41 = 6;
  106. var S42 = 10;
  107. var S43 = 15;
  108. var S44 = 21;
  109. function F(x, y, z) {
  110. return or(and(x, y), and(not(x), z));
  111. }
  112. function G(x, y, z) {
  113. return or(and(x, z), and(y, not(z)));
  114. }
  115. function H(x, y, z) {
  116. return xor(xor(x, y), z);
  117. }
  118. function I(x, y, z) {
  119. return xor(y, or(x, not(z)));
  120. }
  121. function rotateLeft(a, n) {
  122. return or(shl(a, n), (shr(a, (32 - n))));
  123. }
  124. function FF(a, b, c, d, x, s, ac) {
  125. a = a + F(b, c, d) + x + ac;
  126. a = rotateLeft(a, s);
  127. a = a + b;
  128. return a;
  129. }
  130. function GG(a, b, c, d, x, s, ac) {
  131. a = a + G(b, c, d) + x + ac;
  132. a = rotateLeft(a, s);
  133. a = a + b;
  134. return a;
  135. }
  136. function HH(a, b, c, d, x, s, ac) {
  137. a = a + H(b, c, d) + x + ac;
  138. a = rotateLeft(a, s);
  139. a = a + b;
  140. return a;
  141. }
  142. function II(a, b, c, d, x, s, ac) {
  143. a = a + I(b, c, d) + x + ac;
  144. a = rotateLeft(a, s);
  145. a = a + b;
  146. return a;
  147. }
  148. function transform(buf, offset) {
  149. var a = 0, b = 0, c = 0, d = 0;
  150. var x = transformBuffer;
  151. a = state[0];
  152. b = state[1];
  153. c = state[2];
  154. d = state[3];
  155. for (i = 0; i < 16; i++) {
  156. x[i] = and(buf[i * 4 + offset], 0xff);
  157. for (j = 1; j < 4; j++) {
  158. x[i] += shl(and(buf[i * 4 + j + offset], 0xff), j * 8);
  159. }
  160. }
  161. /* tour 1 */
  162. a = FF(a, b, c, d, x[0], S11, 0xd76aa478); /* 1 */
  163. d = FF(d, a, b, c, x[1], S12, 0xe8c7b756); /* 2 */
  164. c = FF(c, d, a, b, x[2], S13, 0x242070db); /* 3 */
  165. b = FF(b, c, d, a, x[3], S14, 0xc1bdceee); /* 4 */
  166. a = FF(a, b, c, d, x[4], S11, 0xf57c0faf); /* 5 */
  167. d = FF(d, a, b, c, x[5], S12, 0x4787c62a); /* 6 */
  168. c = FF(c, d, a, b, x[6], S13, 0xa8304613); /* 7 */
  169. b = FF(b, c, d, a, x[7], S14, 0xfd469501); /* 8 */
  170. a = FF(a, b, c, d, x[8], S11, 0x698098d8); /* 9 */
  171. d = FF(d, a, b, c, x[9], S12, 0x8b44f7af); /* 10 */
  172. c = FF(c, d, a, b, x[10], S13, 0xffff5bb1); /* 11 */
  173. b = FF(b, c, d, a, x[11], S14, 0x895cd7be); /* 12 */
  174. a = FF(a, b, c, d, x[12], S11, 0x6b901122); /* 13 */
  175. d = FF(d, a, b, c, x[13], S12, 0xfd987193); /* 14 */
  176. c = FF(c, d, a, b, x[14], S13, 0xa679438e); /* 15 */
  177. b = FF(b, c, d, a, x[15], S14, 0x49b40821); /* 16 */
  178. /* tour 2 */
  179. a = GG(a, b, c, d, x[1], S21, 0xf61e2562); /* 17 */
  180. d = GG(d, a, b, c, x[6], S22, 0xc040b340); /* 18 */
  181. c = GG(c, d, a, b, x[11], S23, 0x265e5a51); /* 19 */
  182. b = GG(b, c, d, a, x[0], S24, 0xe9b6c7aa); /* 20 */
  183. a = GG(a, b, c, d, x[5], S21, 0xd62f105d); /* 21 */
  184. d = GG(d, a, b, c, x[10], S22, 0x2441453); /* 22 */
  185. c = GG(c, d, a, b, x[15], S23, 0xd8a1e681); /* 23 */
  186. b = GG(b, c, d, a, x[4], S24, 0xe7d3fbc8); /* 24 */
  187. a = GG(a, b, c, d, x[9], S21, 0x21e1cde6); /* 25 */
  188. d = GG(d, a, b, c, x[14], S22, 0xc33707d6); /* 26 */
  189. c = GG(c, d, a, b, x[3], S23, 0xf4d50d87); /* 27 */
  190. b = GG(b, c, d, a, x[8], S24, 0x455a14ed); /* 28 */
  191. a = GG(a, b, c, d, x[13], S21, 0xa9e3e905); /* 29 */
  192. d = GG(d, a, b, c, x[2], S22, 0xfcefa3f8); /* 30 */
  193. c = GG(c, d, a, b, x[7], S23, 0x676f02d9); /* 31 */
  194. b = GG(b, c, d, a, x[12], S24, 0x8d2a4c8a); /* 32 */
  195. /* tour 3 */
  196. a = HH(a, b, c, d, x[5], S31, 0xfffa3942); /* 33 */
  197. d = HH(d, a, b, c, x[8], S32, 0x8771f681); /* 34 */
  198. c = HH(c, d, a, b, x[11], S33, 0x6d9d6122); /* 35 */
  199. b = HH(b, c, d, a, x[14], S34, 0xfde5380c); /* 36 */
  200. a = HH(a, b, c, d, x[1], S31, 0xa4beea44); /* 37 */
  201. d = HH(d, a, b, c, x[4], S32, 0x4bdecfa9); /* 38 */
  202. c = HH(c, d, a, b, x[7], S33, 0xf6bb4b60); /* 39 */
  203. b = HH(b, c, d, a, x[10], S34, 0xbebfbc70); /* 40 */
  204. a = HH(a, b, c, d, x[13], S31, 0x289b7ec6); /* 41 */
  205. d = HH(d, a, b, c, x[0], S32, 0xeaa127fa); /* 42 */
  206. c = HH(c, d, a, b, x[3], S33, 0xd4ef3085); /* 43 */
  207. b = HH(b, c, d, a, x[6], S34, 0x4881d05); /* 44 */
  208. a = HH(a, b, c, d, x[9], S31, 0xd9d4d039); /* 45 */
  209. d = HH(d, a, b, c, x[12], S32, 0xe6db99e5); /* 46 */
  210. c = HH(c, d, a, b, x[15], S33, 0x1fa27cf8); /* 47 */
  211. b = HH(b, c, d, a, x[2], S34, 0xc4ac5665); /* 48 */
  212. /* tour 4 */
  213. a = II(a, b, c, d, x[0], S41, 0xf4292244); /* 49 */
  214. d = II(d, a, b, c, x[7], S42, 0x432aff97); /* 50 */
  215. c = II(c, d, a, b, x[14], S43, 0xab9423a7); /* 51 */
  216. b = II(b, c, d, a, x[5], S44, 0xfc93a039); /* 52 */
  217. a = II(a, b, c, d, x[12], S41, 0x655b59c3); /* 53 */
  218. d = II(d, a, b, c, x[3], S42, 0x8f0ccc92); /* 54 */
  219. c = II(c, d, a, b, x[10], S43, 0xffeff47d); /* 55 */
  220. b = II(b, c, d, a, x[1], S44, 0x85845dd1); /* 56 */
  221. a = II(a, b, c, d, x[8], S41, 0x6fa87e4f); /* 57 */
  222. d = II(d, a, b, c, x[15], S42, 0xfe2ce6e0); /* 58 */
  223. c = II(c, d, a, b, x[6], S43, 0xa3014314); /* 59 */
  224. b = II(b, c, d, a, x[13], S44, 0x4e0811a1); /* 60 */
  225. a = II(a, b, c, d, x[4], S41, 0xf7537e82); /* 61 */
  226. d = II(d, a, b, c, x[11], S42, 0xbd3af235); /* 62 */
  227. c = II(c, d, a, b, x[2], S43, 0x2ad7d2bb); /* 63 */
  228. b = II(b, c, d, a, x[9], S44, 0xeb86d391); /* 64 */
  229. state[0] += a;
  230. state[1] += b;
  231. state[2] += c;
  232. state[3] += d;
  233. }
  234. /* Avec l'initialisation de Dobbertin: state[0] = 0x12ac2375; state[1] = 0x3b341042; state[2] = 0x5f62b97c; state[3] = 0x4ba763ed; s'il y a une collision: begin 644 Message1 M7MH=JO6_>MG!X?!51$)W,CXV!A"=(!AR71,<X`Y-IIT9^Z&8L$2N'Y*Y:R.; 39GIK9>TF$W()/MEHR%C4:G1R:Q"= ` end begin 644 Message2 M7MH=JO6_>MG!X?!51$)W,CXV!A"=(!AR71,<X`Y-IIT9^Z&8L$2N'Y*Y:R.; 39GIK9>TF$W()/MEHREC4:G1R:Q"= ` end */
  235. function init() {
  236. count[0] = count[1] = 0;
  237. state[0] = 0x67452301;
  238. state[1] = 0xefcdab89;
  239. state[2] = 0x98badcfe;
  240. state[3] = 0x10325476;
  241. for (i = 0; i < digestBits.length; i++)
  242. digestBits[i] = 0;
  243. }
  244. function update(b) {
  245. var index, i;
  246. index = and(shr(count[0], 3), 0x3f);
  247. if (count[0] < 0xffffffff - 7)
  248. count[0] += 8;
  249. else {
  250. count[1]++;
  251. count[0] -= 0xffffffff + 1;
  252. count[0] += 8;
  253. }
  254. buffer[index] = and(b, 0xff);
  255. if (index >= 63) {
  256. transform(buffer, 0);
  257. }
  258. }
  259. function finish() {
  260. var bits = new array(8);
  261. var padding;
  262. var i = 0, index = 0, padLen = 0;
  263. for (i = 0; i < 4; i++) {
  264. bits[i] = and(shr(count[0], (i * 8)), 0xff);
  265. }
  266. for (i = 0; i < 4; i++) {
  267. bits[i + 4] = and(shr(count[1], (i * 8)), 0xff);
  268. }
  269. index = and(shr(count[0], 3), 0x3f);
  270. padLen = (index < 56) ? (56 - index) : (120 - index);
  271. padding = new array(64);
  272. padding[0] = 0x80;
  273. for (i = 0; i < padLen; i++)
  274. update(padding[i]);
  275. for (i = 0; i < 8; i++)
  276. update(bits[i]);
  277. for (i = 0; i < 4; i++) {
  278. for (j = 0; j < 4; j++) {
  279. digestBits[i * 4 + j] = and(shr(state[i], (j * 8)), 0xff);
  280. }
  281. }
  282. }
  283. /* Fin de l'algorithme MD5 */
  284. function hexa(n) {
  285. var hexa_h = "0123456789abcdef";
  286. var hexa_c = "";
  287. var hexa_m = n;
  288. for (hexa_i = 0; hexa_i < 8; hexa_i++) {
  289. hexa_c = hexa_h.charAt(Math.abs(hexa_m) % 16) + hexa_c;
  290. hexa_m = Math.floor(hexa_m / 16);
  291. }
  292. return hexa_c;
  293. }
  294. var ascii = "01234567890123456789012345678901" +
  295. " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ" +
  296. "[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~";
  297. function MD5(message) {
  298. var l, s, k, ka, kb, kc, kd;
  299. init();
  300. for (k = 0; k < message.length; k++) {
  301. l = message.charAt(k);
  302. update(ascii.lastIndexOf(l));
  303. }
  304. finish();
  305. ka = kb = kc = kd = 0;
  306. for (i = 0; i < 4; i++) ka += shl(digestBits[15 - i], (i * 8));
  307. for (i = 4; i < 8; i++) kb += shl(digestBits[15 - i], ((i - 4) * 8));
  308. for (i = 8; i < 12; i++) kc += shl(digestBits[15 - i], ((i - 8) * 8));
  309. for (i = 12; i < 16; i++) kd += shl(digestBits[15 - i], ((i - 12) * 8));
  310. s = hexa(kd) + hexa(kc) + hexa(kb) + hexa(ka);
  311. return s;
  312. }

(8)文件上传工具类

tellsea-upload.js

  1. /** * 上传文件 * @param inputId 输入框id * @param folder 保存文件夹名称 * @param url 上传路径 */
  2. function uploadFile(inputId, folder, url) {
  3. var res = {
  4. code: 0,
  5. message: '',
  6. data: { }
  7. };
  8. var formData = new FormData();
  9. var length = $('#' + inputId)[0].files.length;
  10. if (0 == length) {
  11. res.code = 404;
  12. res.message = '文件为空,请选择文件';
  13. }
  14. for (var i = 0; i < $('#' + inputId)[0].files.length; i++) {
  15. formData.append('file', $('#' + inputId)[0].files[i]);
  16. }
  17. formData.append('folder', folder);
  18. var defer = $.Deferred();
  19. $.ajax({
  20. method: 'post',
  21. url: url,
  22. type: 'POST',
  23. data: formData,
  24. dataType: 'json',
  25. processData: false,
  26. contentType: false,
  27. async: true,
  28. success: function (result) {
  29. res.code = result.code;
  30. res.message = result.message;
  31. res.data = result.data;
  32. defer.resolve(res)
  33. },
  34. error: function (result) {
  35. res.code = result.code;
  36. res.message = result.message;
  37. res.data = result.data;
  38. defer.resolve(res)
  39. }
  40. });
  41. return defer;
  42. }

微信公众号

每天Get一个小技巧

发表评论

表情:
评论列表 (有 0 条评论,284人围观)

还没有评论,来说两句吧...

相关阅读