js对表单序列化、MD5加密、AES加解密、cookie操作的、websocket等常用工具的整合

2023-11-05

在平时写代码中,一些工具会经常用到,但是我每次要用时都是到处去找依赖文件或者重新写方法,这样很麻烦于是为了方便我将一些常用的工具类写在一个js文件中,之后使用直接引入文件就可以了,这里我也拿出来分享给大家。

批注:这个工具类中并不完全是本人原创,大部分都是我对其他人代码结构的一些修改,少部分是我自己写的,还望各位大佬勿喷。

# 表单序列化为json对象

注意:要使用这个方法需之前引用jQuery依赖包!!!

测试代码:
<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">
	<meta http-equiv="X-UA-Compatible" content="IE=edge">
	<title>工具测试</title>
	<link rel="stylesheet" href="">
</head>
<body>
	<form id="testForm" accept-charset="utf-8"><br>
		姓名:<input type="text" name="username"><br>
		密码:<input type="password" name="password"><br>
		性别:<input type="radio" name="sex">男    <input type="radio" name="sex">女<br>
		爱好:
		<input type="checkbox" name="hobby" value="乒乓球">乒乓球
		<input type="checkbox" name="hobby" value="羽毛球">羽毛球
		<input type="checkbox" name="hobby" value="篮球">篮球
		<input type="checkbox" name="hobby" value="排球">排球
		<br>
	</form>
	<button οnclick="formTest()">提交</button>
	<script src="jquery-3.3.1.min.js"></script>
	<script src="tzutil.min.js"></script>
	<script>
		function formTest(){
			console.log($('#testForm').serializeJson());
		}
	</script>
</body>
</html>
测试截图:


本工具类的好处:

如果用jQuery自带的serialize或者serializeArray方法的话在实际运用中并不是那么方便,给大家看一下这两个方法获取的结果:

serialize()  :


可以看到这就是普通的form表单,并且对其中的中文进行了utf-8转码,在实际开发中大多数都是用的json格式进行前后台交互,如果用这种方法就不是那么方便了。

serializeArray()  :


这一个方法是将表单序列化成一个数组,有多少个键值对就返回多少个数组,这一个相对于serialize方法来说运用起来更容易得多,但是个人觉得还是没有json对象来的方便,特别是对于表单内的同一个name,json格式可以将其归并成一个数组,在那种很大的表单中使用就更加方便了,用哪个我觉得还是看个人情况吧。

# MD5加密

测试代码:
<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">
	<meta http-equiv="X-UA-Compatible" content="IE=edge">
	<title>工具测试</title>
	<link rel="stylesheet" href="">
</head>
<body>

	请输入你要加密的字符串<input type="text" id="text"><br><br>
	加密后的结果:<textarea id="md5Code"></textarea><br>
	<button οnclick="md5Test()">加密</button>

	<script src="jquery-3.3.1.min.js"></script>
	<script src="tzutil.js"></script>
	<script>
		function md5Test(){
			var text = $('#text').val();
			// new一个md5工具对象
			var md5 = new md5Util();

			// 调用md5工具中的hex_md5方法
			// text为你将要加密的内容
			// 返回加密后的密文
			$('#md5Code').val(md5.hex_md5(text));
		}
	</script>
</body>
</html>
测试结果:


使用方法:

先new一个md5Util对象,如果不new的话会调用失败,new了之后再调用其中的hex_md5方法,我在整合的时候将算法结构改过,并且对原创文件进行了删减,如果想要使用全部md5加密方法可以到我的github下载:https://github.com/tzfun/util/blob/master/src/js/MD5/md5.js

# cookie工具类

测试代码:
<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">
	<meta http-equiv="X-UA-Compatible" content="IE=edge">
	<title>工具测试</title>
	<link rel="stylesheet" href="">
</head>
<body>
	
	<button οnclick="setCookie()">添加cookie</button>
	<button οnclick="getCookie()">获取cookie</button>
	<button οnclick="delCookie()">删除cookie</button>
	<br>
	cookie名:<input type="text" id="cookiesName">
	cookie值:<input type="text" id="cookiesValue">
	<script src="jquery-3.3.1.min.js"></script>
	<script src="tzutil.js"></script>
	<script>
		// 先new一个cookiesUtil对象
		var cookiesUtil = new cookiesUtil();

		function setCookie(){
            //调用cookiesUtil工具类中setCookie,存cookie
			cookiesUtil.setCookie('这是cookie名','这是cookie值','h1');
		}
		function delCookie(){
            //调用cookiesUtil工具类中delCookie,删除cookie
			cookiesUtil.delCookie('这是cookie名');
		}
		function getCookie(){
            //调用cookiesUtil工具类中getCookie取cookie中的值.
			var cookiesVal=cookiesUtil.getCookie('这是cookie名');
			$('#cookiesName').val('这是cookie名');
			$('#cookiesValue').val(cookiesVal);
		}
	</script>
</body>
</html>


测试截图:



使用方法:

使用该方法首先要new一个cookiesUtil对象,再调用其中的增删查方法。在添加cookie时注意:setCookie有三个参数必须填,setCookie(cookieName,cookieValue,time),第一个是你要存的cookie的名称,在查询和删除时使用,如果重复存同一个名字,将会覆盖之前存的内容,第二个参数是cookie的值,第三个是cookie的有效时间,对于有效时间有一定格式,这是之前我参考一位博主写的博客里面的代码,时间格式要求如下:

时间格式为:时间关键字+值
时间关键字:
h——代表小时
d——代表天数
s——代表秒钟
关键字只能为小写!!!!

例如:
h5   代表有效时间为5小时
d46    代表有效时间为46天
s100    代表有效时间为100秒

# AES对称加解密

测试代码:
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title>工具测试</title>
    <link rel="stylesheet" href="">
</head>
<body>
<div style="position: relative;width: 60%;left:50%;margin-left: -30%;margin-top: 40px;">
    加密密码:<input type="text" id="encryptKey">
    <button οnclick="encrypt()">加密</button>
    解密密码:<input type="text" id="decryptKey">
    <button οnclick="decrypt()">解密</button>
    <br><br><br>
    明文:<textarea id="text" cols="100" rows="10"></textarea><br>
    密文: <textarea id="aesCode" cols="100" rows="10"></textarea>
</div>

<script src="jquery-3.3.1.min.js"></script>
<script src="tzutil.js"></script>
<script>
    // 先new一个cookiesUtil对象
    var AES = new aesUtil();
    //加密
    function encrypt() {
        // 获取到加密密钥
        var encryptKey = $('#encryptKey').val();
        // 获取到明文内容
        var text = $('#text').val();
        //进行加密,返回加密后的结果
        var encryptRes=AES.encrypt(text,encryptKey);

        $('#aesCode').val(encryptRes);
    }
    //解密
    function decrypt() {
        //获取密文
        var aseCode = $('#aesCode').val();
        // 获取解密秘钥
        var decryptKey = $('#decryptKey').val();
        // 进行解密,返回解密后的结果
        var decryptRes = AES.decrypt(aseCode,decryptKey);

        $('#text').val(decryptRes);
    }
</script>
</body>
</html>
测试截图:



使用说明:

我在网上找了很多js的AES加密方法,都没找到封装好了的成套方法,于是在官方算法的基础上进行了封装,将两个方法封装成对象就方便多了(我要吐槽一句:在封装的过程中真的感觉弱类型语言对象操作真的很方便,比java这种强类型语言好用多了哭)。

话不多说,使用方法:首先得new一个aesUtil对象

    // 先new一个cookiesUtil对象
    var AES = new aesUtil();
然后调用加解密方法,加密方法(返回密文):
//plaintText是你将要加密的明文,key是秘钥,注意key必须是16位!!
encrypt(plaintText,key)

解密方法(返回明文):

//encryptedData是密文数据,key是解密秘钥,注意key必须是16位!!
decrypt(encryptedData,key)

# webSocket工具类

测试代码:
var url = "ws://localhost:8080/socketTest/";
    var msg = "hello";
    // 先new一个mySocket对象
    var mySocket = new Web_Socket(url,msg);

    // 对socket环境测试,控制台显示测试结果,测试成功后会自动关闭连接,无需手动关闭
    mySocket.test();

    // 工作环境时调用work方法
    mySocket.work({
        //socket连接成功时的回调函数
        success:function (res) {
            console.log(res);
        },
        //socket连接失败的回调函数
        error:function (res) {
            console.log(res);
        }
    })
    
    //关闭socket连接
    mySocket.close();
方法说明:

这一方法是我在之前写的,当时用js连接socket就觉得很麻烦,就想着封装一下使用,经过测试是可用的。

老规矩先new一个对象,不过这一对象在创建时需要传入两个参数,url:socket后台连接地址;msg:socket握手信息(相当于一个连接密码)

    var url = "ws://localhost:8080/socketTest/";
    var msg = "hello";
    // 先new一个mySocket对象
    var mySocket = new Web_Socket(url,msg);

socket环境测试方法,测试结果会打印在控制台,连接成功后会自动关闭连接,无需手动close

 mySocket.test();

socket工作环境,有两个回调函数,success是成功时回调函数,error是失败时回调函数,该方法调用后需要手动关闭socket连接。

   // 工作环境时调用work方法
    mySocket.work({
        //socket连接成功时的回调函数
        success:function (res) {
            console.log(res);
        },
        //socket连接失败的回调函数
        error:function (res) {
            console.log(res);
        }
    })

最后就是关闭socket连接

    //关闭socket连接
    mySocket.close();


最后提供该工具包的地址:https://github.com/tzfun/util/blob/master/src/js/myutil/tzutil.min.js

测试项目包:https://github.com/tzfun/util/tree/master/src/js/myutil/utilTest

欢迎向我提出你宝贵的意见大笑:1246886075@qq.com

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

js对表单序列化、MD5加密、AES加解密、cookie操作的、websocket等常用工具的整合 的相关文章

随机推荐

  • React中文文档之Lifting State Up

    Lifting State Up 提升状态 经常的 几个组件需要映射相同的数据改变 我们推荐提升共享的state状态到它们最近的公共祖先元素 让我们看看这是如何实现的 在这个章节 我们将创建一个温度计算器 计算在一个给定的温度 水是否会沸腾
  • 20200331 --【Python】-- selenium 登录练习

    学习 python 的第59天 模拟腾讯课堂 自动化 登录案例 简单 coding utf 8 Time 2020 3 31 10 52 Author admin Site File 腾讯课堂登录 py Software PyCharm i
  • Allegro显示飞线和隐藏飞线

    隐藏飞线 显示飞线
  • C++ 标准库中数据类型转换

    头文件引用
  • 延迟队列的方案设计

    延迟队列的实现方案 一 应用场景 什么是延时队列 顾名思义 首先它要具有队列的特性 再给它附加一个延迟消费队列消息的功能 也就是说可以指定队列中的消息在哪个时间点被消费 延时队列在项目中的应用场景是比较多的 尤其像电商类平台 1 订单成功后
  • 基于js利用经纬度进行两地的距离计算

    根据地球上两点之间的经纬度计算两点之间的直线距离 经纬度到距离的计算在通信工程中应用比较广泛 所以cosbeta通过搜索找到了一个js的计算脚本 其实是google map的计算脚本 应该算是比较准确了 做成了这个经纬度算距离的工具 今天有
  • 全到哭,阿里新产2023版Java架构核心宝典,涵盖Java进阶所有主流技术

    导言 什么是架构师 对于程序员来说 聊架构是一个永不过时的话题 实际上 每一家公司都有自己对架构师不同的定位 因为不同的公司 所处的阶段 业务模式以及应用场景都不一样 因此对架构师的要求不一样 所以定位也就不同 但是 无论如何 架构师除了优
  • STM32------TFTLCD原理

    目录 TFTLCD简介 一 知识点 1 TFTLCD驱动原理 ALINETEK TFTLCD模块介绍 2 2 8寸TFLCD模块特点 3 TFTLCD模块原理图 4 TFTLCD接口说明 5 并口驱动简介 6 ILI9341驱动时序 7 驱
  • 过滤器使用与bean注入

    1 web xml中各元素启动顺序 在项目启动时 监听器listener最先初始化 然后是过滤器filter 最后是servlet Spring监听器在启动时会读取spring配置文件 进行spring容器的初始化 springMVC的di
  • springBoot上传文件时MultipartFile报null 空 问题解决方法

    1 问题描述 之前用spring MVC 转成spring boot之后发现上传不能用 网上参考说是spring boot已经有CommonsMultipartResolver了 但是我的上传后台接收的还是null 2 第一种解决方法 加入
  • Jenkins中使用火线进行Android静态代码扫描

    背景 火线 是360Qtest测试团队在公司内部经过半年实践后向外推出的一款针对Android代码的静态扫描工具 本文主要介绍如何在Jenkins下植入火线扫描并实时查看结果的配置 环境配置 Jenkins 推荐使用最新的版本 本文使用的是
  • Java基础系列8:Java的序列化与反序列化(修)

    一 简介 对象序列化就是把一个对象变成二进制的数据流的一种方法 通过对象序列化可以方便地实现对象的传输和存储 把对象转换为字节序列的过程称为对象的序列化 把字节序列恢复为对象的过程称为对象的反序列化 对象的序列化主要有两种用途 1 把对象的
  • matlab gui 如何输入矩阵,在matlab中如何输入矩阵方?

    这需要GUI设置 举个例子 By lyqmath DLUT School of Mathematical Sciences BLOG http blog csdn net lyqmathfunction main clc clear all
  • 【华为OD机试真题 JAVA】按身高和体重排队

    JS版 华为OD机试真题 JS 按身高和体重排队 标题 按身高和体重排队 时间限制 1秒 内存限制 262144K 语言限制 不限 某学校举行运动会 学生们按编号 1 2 3 n 进行标识 现需要按照身高由低到高排列 对身高相同的人 按体重
  • python3GUI--模仿一些b站网页端组件By:PyQt5(详细介绍、附下载地址)

    文章目录 一 前言 二 展示 1 banner 1 静图 2 动图 2 一般视频组件 1 静图 2 动图 3 排行榜 1 静图 2 动图 三 设计心得 顺序由简到难 1 排行榜 2 一般视频组件 3 banner 四 总结 五 下载地址 一
  • 介绍一下lpc1114

    我是LPC1114 它是一款由NXP半导体制造的低功耗32位ARM Cortex M0微控制器 具有多种外设 可满足高性能应用的需求 它拥有一个32位ARM Cortex M0内核 可以运行频率高达50MHz 提供最大64KB的Flash存
  • 基于opencv的数字识别系统

    一 目的 想要实现的功能 帮助我们在泵中扫描燃油 并在应用程序中输入燃油信息 所需技术 python程序对于拍摄的汽油泵的图像 尝试从中读取数字 opencv实现 先使用python对其进行原型设计 然后将代码转换成C 以在ios应用程序上
  • idea java编译报错_IDEA编译java报错的解决方法

    IDEA编译java报错的解决方法 发布时间 2020 06 26 11 54 16 来源 亿速云 阅读 119 作者 Leah 本篇文章给大家分享的是有关IDEA编译java报错的解决方法 小编觉得挺实用的 因此分享给大家学习 希望大家阅
  • Android Studio设置

    界面设置 默认的 Android Studio 为灰色界面 可以选择使用炫酷的黑色界面 Settings gt Appearance gt Theme 选择 Darcula 主题即可 字体设置 系统字体设置 如果你的Android Stud
  • js对表单序列化、MD5加密、AES加解密、cookie操作的、websocket等常用工具的整合

    在平时写代码中 一些工具会经常用到 但是我每次要用时都是到处去找依赖文件或者重新写方法 这样很麻烦于是为了方便我将一些常用的工具类写在一个js文件中 之后使用直接引入文件就可以了 这里我也拿出来分享给大家 批注 这个工具类中并不完全是本人原