form 表单提交时用ajax异步请求导致ajax请求结果无法接收问题

1、背景描述,有个公司内部用的小系统,不想大动干戈用太多前端框架,就用HTML5写了个登陆页面,刚开始想着用form表单提交登陆账户信息。后来因为前后端分离,并且统一用ajax调用后台服务交互数据,因此在form表单提交的方法中加了ajax异步调用后台服务验证登陆信息。
2、问题,在登陆功能测试时,偶尔出现点登陆按钮后,页面跳转并重新加载后无反应(控制台没有报错,后台服务正常),前端ajax调用成功后方法打了断点也没进入,再点登陆按钮几次又能正常登陆。
3、解决,经过测试为form表单提交并刷新页面后,ajax异步请求结果还没有接收到,导致ajax调用成功后方法没有执行。所以能感觉到页面刷新了一下(因为URL后面多了个"?"号),但没有登陆成功,也没有报错。最后去掉form表单问题解决。

登陆失败多了个"?"号

修改正确后代码:

<!DOCTYPE html>
<html lang="zh">
<head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><link rel="shortcut icon" href="favicon.ico" type="image/x-icon" /><link rel="icon" sizes="any" mask href="favicon.ico"><title>登陆页面</title><style>*{margin:0;padding:0;}body{margin:0 auto;background-color:#E7FBFA;}#loginDiv{margin:0 auto;background-color:#E7FBFA;background-size:1024px 567px;min-width:824px;min-height:600px;}#divForm, form{margin:0 auto;/* display:block; *//* border:1px solid #303a40; *//* padding: 200px 0 0 390px; */min-width:434px;min-height:400px;}ul{margin:40px auto 10px auto;}li{list-style:none;height:30px;text-align: center;margin-bottom:10px;}li span{display: block;color:#ff6633;font-size: 12px;}.error-border{border:1px solid #ff6633;}.success-border{border:1px solid #BBB;/*2eff37*/}.username, .password{padding:0 0 0 10px;color:#666;width:200px;height: 30px;/* border:1px solid #BBB; */}.username:focus, .password:focus {outline: none;border-color: #4488F9;}::-webkit-input-placeholder { /* WebKit, Blink, Edge */    color: #BBB; font-size:14px}:-moz-placeholder { /* Mozilla Firefox 4 to 18 */   color: #BBB;  font-size:14px}::-moz-placeholder { /* Mozilla Firefox 19+ */   color: #BBB;  font-size:14px}:-ms-input-placeholder { /* Internet Explorer 10-11 */   color: #BBB;  font-size:14px}.saveAccounts{margin:0 auto;padding:0;width:200px;height: 16px;font-size: 12px;color:#BBB;}.saveAccounts  input[type=checkbox] {cursor: pointer;position: relative;border:1px solid #BBB;background-color:rgba(0,0,0,0);color:#BBB;height: 16px;padding:0;margin:0;vertical-align:top;}.saveAccounts  input[type=checkbox]::after {position: absolute;top: 0;background-color: #fff;color: #fff;width: 14px;height: 14px;display: inline-block;visibility: visible;padding-left: 0px;text-align: center;content: ' ';border-radius: 2px;box-sizing: border-box;border: 1px solid #ddd;}.saveAccounts  input[type=checkbox]:checked::after {content: "";background-color: #037DF3;border-color: #037DF3;background-color: #037DF3;}.saveAccounts  input[type=checkbox]:checked::before {content: '';position: absolute;top: 1px;left: 5px;width: 3px;height: 8px;border: solid white;border-width: 0 2px 2px 0;transform: rotate(45deg);z-index: 1;}.loginTips{margin:0 auto;width:200px;height: 25px;color:#ff0000;}.submit{margin:0 auto;width:200px;height: 25px;text-align: center;background-color: #0066FF;padding:17px 0 0 0;}.submit input{color:#fff;font-size:14px;border-style:none;margin:0 auto;width: 200px;height: 25px;text-align: center;background-color:rgba(0,0,0,0);}</style>
</head><body>
<div id="loginDiv">
<!-- <form action=""> -->
<div id="divForm"><ul class='logging'><li><input class="username success-border" type="text" placeholder="请输入帐号" onfocus="focusFun(this)" onblur="blurFun(this)" maxlength="11"></li><li><input class="password success-border" type="password" placeholder="请输入密码"></li></ul><div class="saveAccounts"><input type="checkbox" id="saveInput" title="记住密码" checked="checked" onClick="saveCook()"/>&nbsp;记住密码</div><div class="loginTips"><span class="loginTipsSpan"></span></div><div class="submit"><input id="submit" type="submit" value="登&nbsp;&nbsp;&nbsp;录"></div>
</div>
<!-- </form> -->
</div>
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script>var request_url = 'http://127.0.0.1:8009/test';function getCookie(cname){var name = cname + "=";var ca = document.cookie.split(';');for(var i=0; i<ca.length; i++) {var c = ca[i].trim();if (c.indexOf(name)==0) return c.substring(name.length,c.length);}return "";}function setCookie(cname,cvalue,exdays){var d = new Date();d.setTime(d.getTime()+(exdays*24*60*60*1000));var expires = "expires="+d.toGMTString();document.cookie = cname+"="+cvalue+"; "+expires;}//请求数据function httpRequestData(url,inSendData,callBack){//创建一个 XMLHTTPRequest 类型对象var xhr = null;if (window.XMLHttpRequest) {//标准浏览器xhr = new window.XMLHttpRequest;} else {//IE浏览器 xhr = new ActiveXObject("Microsoft.XMLHTTP");}xhr.onreadystatechange = success;//open()方法开启请求xhr.open("POST", url, true); //请求的类型GET POST; true异步(默认) false同步//post请求要自己设置请求头xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");//发送表单数据//xhr.setRequestHeader("Content-type", "application/json"); //发送json格式数据//xhr.setRequestHeader("Content-type","application/json;charset=utf-8"); //发送json格式数据//xhr.setRequestHeader("Content-type", "text/plain;charset=utf-8");发送纯文本//xhr.setRequestHeader("Content-type", "text/html;charset=utf-8");发送html文本//xhr.send(JSON.stringify(inSendData).replace(/\s+/g,""));//xhr.send(JSON.stringify(inSendData));xhr.send(inSendData);//xhr.send(null);function success() {if (xhr.readyState == 4) { //回传成功if(xhr.status == 200){//console.info(xhr.responseText);console.log('network success.');callBack(xhr);//return true;}else{console.log("Problem retrieving XML data");//return true;}}//else {//	console.log('network error.');//	return false;//}}}function focusFun(point){//触发焦点,若输入的值跟默认值一样,输入的值为空if(point.defaultValue == point.value){point.value = '';}}function blurFun(point){//失去焦点时,若值为空,则值等于默认值,也就是placeholderif(point.value == ''){point.value = point.defaultValue;}}function saveCook(){//取消记住密码,则删除if(!document.getElementById("saveInput").checked){// 删除cookiesetCookie('un', '', 0);setCookie('pw', '', 0);}setCookie('cc', document.getElementById("saveInput").checked, 365);}function checkLogin(un,pwd) {//var sendData = "{'login':'"+un+"','pass':'"+pwd+"'}";var sendData = "login="+un+"&pass="+pwd;httpRequestData(request_url + '/login/getUserInfo',sendData,addInfo);};function submitForm(){if(document.getElementById("saveInput").checked){setCookie('un', $('.username').val(),365);setCookie('pw', $('.password').val(),365);}setCookie('cc', document.getElementById("saveInput").checked,365);checkLogin($('.username').val(),$('.password').val());}function addInfo(xhr){var returnVaule = $.parseJSON(xhr.responseText);console.log(returnVaule);if(returnVaule.code===0){if(returnVaule.hasOwnProperty("data")){if(returnVaule.data===""){$('.loginTipsSpan').html('登陆失败!输入用户名或密码错误!!!');}else{setCookie('loginState', '1', 365);setCookie('uname', returnVaule.data.name, 365);console.log('登陆成功!');window.location.href = "main.html";}}else{$('.loginTipsSpan').html('登陆失败!输入用户名或密码错误!!!');}}else{$('.loginTipsSpan').html('登陆失败!输入用户名或密码错误!!!');}}$(function(){//若验证正确,则为true,最后判断是否能提交var isPwd = falsevar isUser = false;$(document).ready(function(){var user = getCookie("un");var pwd = getCookie("pw");var cc = getCookie("cc");// 判断是否存在cookieif (user) {$('.username').val(user);isPwd = true;$('.password').val(pwd);isUser = true;}if (cc=='false') {document.getElementById("saveInput").checked = "";}else {document.getElementById("saveInput").checked = "checked";}})$('.username').blur(function(){//正则表达式,验证用户名//用户名要1开头,第二位是3或4或5或6,最后一位以8或9结束,一共要11位//reg=/^1[3|4|5|6][0-9]\d{8,9}$/i;if($(this).val() == '' || $(this).val()  == '请输入您的账号'){$('.username').addClass('error-border');$('.loginTipsSpan').html('账户不能为空!!!');$(this).removeClass('success-border');isPwd = false;}//else if($('.username').val().length < 11){//    $('.loginTipsSpan').html('长度错误!!!');//    $('.username').addClass('error-border');//}//else if(!reg.test($('.username').val())){//    $('.loginTipsSpan').html('账户不存在!!!');//    $('.username').addClass('error-border');//}else{$('.username').removeClass('error-border');$('.username').addClass('success-border');$('.loginTipsSpan').html('');isUser = true;}});$('.password').blur(function(){//密码要a-z(大小写),1-9,总共6-22位//正则可以先了解//reg=/^[\@A-Za-z0-9\!\#\$\%\^\&\*\.\~]{6,22}$/;if($(this).val() == ''){$(this).addClass('error-border');$('.loginTipsSpan').html('密码不能为空!!!');$(this).removeClass('success-border');isPwd = false;}//else if(!reg.test($(this).val())){//    $(this).addClass('error-border');//    $('.loginTipsSpan').html('密码格式不对!!!');//}else{$(this).addClass('success-border');$(this).removeClass('error-border');$('.loginTipsSpan').html('');isPwd = true;}});//$('form').submit(function(){$('#submit').click(function(){$('.loginTipsSpan').html('');//用户名密码验证通过则提交,验证不通过不提交if(isPwd && isUser){submitForm();//alert('提交成功!')//return true;}else{if(!($('.username').val() == '' || $('.username').val()  == '请输入您的账号')&&($('.password').val() != '')){submitForm();}else{$('.loginTipsSpan').html('用户名或密码不能为空!!!');setCookie('cc', document.getElementById("saveInput").checked,365);//return false;}}})})
</script>
</body>
</html>

 有问题代码:

<!DOCTYPE html>
<html lang="zh">
<head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><link rel="shortcut icon" href="favicon.ico" type="image/x-icon" /><link rel="icon" sizes="any" mask href="favicon.ico"><title>登陆页面</title><style>*{margin:0;padding:0;}body{margin:0 auto;background-color:#E7FBFA;}#loginDiv{margin:0 auto;background-color:#E7FBFA;background-size:1024px 567px;min-width:824px;min-height:600px;}form{margin:0 auto;/* display:block; *//* border:1px solid #303a40; *//* padding: 200px 0 0 390px; */min-width:434px;min-height:400px;}ul{margin:40px auto 10px auto;}li{list-style:none;height:30px;text-align: center;margin-bottom:10px;}li span{display: block;color:#ff6633;font-size: 12px;}.error-border{border:1px solid #ff6633;}.success-border{border:1px solid #BBB;/*2eff37*/}.username, .password{padding:0 0 0 10px;color:#666;width:200px;height: 30px;/* border:1px solid #BBB; */}.username:focus, .password:focus {outline: none;border-color: #4488F9;}::-webkit-input-placeholder { /* WebKit, Blink, Edge */    color: #BBB; font-size:14px}:-moz-placeholder { /* Mozilla Firefox 4 to 18 */   color: #BBB;  font-size:14px}::-moz-placeholder { /* Mozilla Firefox 19+ */   color: #BBB;  font-size:14px}:-ms-input-placeholder { /* Internet Explorer 10-11 */   color: #BBB;  font-size:14px}.saveAccounts{margin:0 auto;padding:0;width:200px;height: 16px;font-size: 12px;color:#BBB;}.saveAccounts  input[type=checkbox] {cursor: pointer;position: relative;border:1px solid #BBB;background-color:rgba(0,0,0,0);color:#BBB;height: 16px;padding:0;margin:0;vertical-align:top;}.saveAccounts  input[type=checkbox]::after {position: absolute;top: 0;background-color: #fff;color: #fff;width: 14px;height: 14px;display: inline-block;visibility: visible;padding-left: 0px;text-align: center;content: ' ';border-radius: 2px;box-sizing: border-box;border: 1px solid #ddd;}.saveAccounts  input[type=checkbox]:checked::after {content: "";background-color: #037DF3;border-color: #037DF3;background-color: #037DF3;}.saveAccounts  input[type=checkbox]:checked::before {content: '';position: absolute;top: 1px;left: 5px;width: 3px;height: 8px;border: solid white;border-width: 0 2px 2px 0;transform: rotate(45deg);z-index: 1;}.loginTips{margin:0 auto;width:200px;height: 25px;color:#ff0000;}.submit{margin:0 auto;width:200px;height: 25px;text-align: center;background-color: #0066FF;padding:17px 0 0 0;}.submit input{color:#fff;font-size:14px;border-style:none;margin:0 auto;width: 200px;height: 25px;text-align: center;background-color:rgba(0,0,0,0);}</style>
</head><body>
<div id="loginDiv">
<form action=""><ul class='logging'><li><input class="username success-border" type="text" placeholder="请输入帐号" onfocus="focusFun(this)" onblur="blurFun(this)" maxlength="11"></li><li><input class="password success-border" type="password" placeholder="请输入密码"></li></ul><div class="saveAccounts"><input type="checkbox" id="saveInput" title="记住密码" checked="checked" onClick="saveCook()"/>&nbsp;记住密码</div><div class="loginTips"><span class="loginTipsSpan"></span></div><div class="submit"><input id="submit" type="submit" value="登&nbsp;&nbsp;&nbsp;录"></div>
</form>
</div>
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script>var request_url = 'http://127.0.0.1:8009/test';function getCookie(cname){var name = cname + "=";var ca = document.cookie.split(';');for(var i=0; i<ca.length; i++) {var c = ca[i].trim();if (c.indexOf(name)==0) return c.substring(name.length,c.length);}return "";}function setCookie(cname,cvalue,exdays){var d = new Date();d.setTime(d.getTime()+(exdays*24*60*60*1000));var expires = "expires="+d.toGMTString();document.cookie = cname+"="+cvalue+"; "+expires;}//请求数据function httpRequestData(url,inSendData,callBack){//创建一个 XMLHTTPRequest 类型对象var xhr = null;if (window.XMLHttpRequest) {//标准浏览器xhr = new window.XMLHttpRequest;} else {//IE浏览器 xhr = new ActiveXObject("Microsoft.XMLHTTP");}xhr.onreadystatechange = success;//open()方法开启请求xhr.open("POST", url, true); //请求的类型GET POST; true异步(默认) false同步//post请求要自己设置请求头xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");//发送表单数据//xhr.setRequestHeader("Content-type", "application/json"); //发送json格式数据//xhr.setRequestHeader("Content-type","application/json;charset=utf-8"); //发送json格式数据//xhr.setRequestHeader("Content-type", "text/plain;charset=utf-8");发送纯文本//xhr.setRequestHeader("Content-type", "text/html;charset=utf-8");发送html文本//xhr.send(JSON.stringify(inSendData).replace(/\s+/g,""));//xhr.send(JSON.stringify(inSendData));xhr.send(inSendData);//xhr.send(null);function success() {if (xhr.readyState == 4) { //回传成功if(xhr.status == 200){//console.info(xhr.responseText);console.log('network success.');callBack(xhr);//return true;}else{console.log("Problem retrieving XML data");//return true;}}//else {//	console.log('network error.');//	return false;//}}}function focusFun(point){//触发焦点,若输入的值跟默认值一样,输入的值为空if(point.defaultValue == point.value){point.value = '';}}function blurFun(point){//失去焦点时,若值为空,则值等于默认值,也就是placeholderif(point.value == ''){point.value = point.defaultValue;}}function saveCook(){//取消记住密码,则删除if(!document.getElementById("saveInput").checked){// 删除cookiesetCookie('un', '', 0);setCookie('pw', '', 0);}setCookie('cc', document.getElementById("saveInput").checked, 365);}function checkLogin(un,pwd) {//var sendData = "{'login':'"+un+"','pass':'"+pwd+"'}";var sendData = "login="+un+"&pass="+pwd;httpRequestData(request_url + '/login/getUserInfo',sendData,addInfo);};function submitForm(){if(document.getElementById("saveInput").checked){setCookie('un', $('.username').val(),365);setCookie('pw', $('.password').val(),365);}setCookie('cc', document.getElementById("saveInput").checked,365);checkLogin($('.username').val(),$('.password').val());}function addInfo(xhr){var returnVaule = $.parseJSON(xhr.responseText);console.log(returnVaule);if(returnVaule.code===0){if(returnVaule.hasOwnProperty("data")){if(returnVaule.data===""){$('.loginTipsSpan').html('登陆失败!输入用户名或密码错误!!!');}else{setCookie('loginState', '1', 365);setCookie('uname', returnVaule.data.name, 365);console.log('登陆成功!');window.location.href = "main.html";}}else{$('.loginTipsSpan').html('登陆失败!输入用户名或密码错误!!!');}}else{$('.loginTipsSpan').html('登陆失败!输入用户名或密码错误!!!');}}$(function(){//若验证正确,则为true,最后判断是否能提交var isPwd = falsevar isUser = false;$(document).ready(function(){var user = getCookie("un");var pwd = getCookie("pw");var cc = getCookie("cc");// 判断是否存在cookieif (user) {$('.username').val(user);isPwd = true;$('.password').val(pwd);isUser = true;}if (cc=='false') {document.getElementById("saveInput").checked = "";}else {document.getElementById("saveInput").checked = "checked";}})$('.username').blur(function(){//正则表达式,验证用户名//用户名要1开头,第二位是3或4或5或6,最后一位以8或9结束,一共要11位//reg=/^1[3|4|5|6][0-9]\d{8,9}$/i;if($(this).val() == '' || $(this).val()  == '请输入您的账号'){$('.username').addClass('error-border');$('.loginTipsSpan').html('账户不能为空!!!');$(this).removeClass('success-border');isPwd = false;}//else if($('.username').val().length < 11){//    $('.loginTipsSpan').html('长度错误!!!');//    $('.username').addClass('error-border');//}//else if(!reg.test($('.username').val())){//    $('.loginTipsSpan').html('账户不存在!!!');//    $('.username').addClass('error-border');//}else{$('.username').removeClass('error-border');$('.username').addClass('success-border');$('.loginTipsSpan').html('');isUser = true;}});$('.password').blur(function(){//密码要a-z(大小写),1-9,总共6-22位//正则可以先了解//reg=/^[\@A-Za-z0-9\!\#\$\%\^\&\*\.\~]{6,22}$/;if($(this).val() == ''){$(this).addClass('error-border');$('.loginTipsSpan').html('密码不能为空!!!');$(this).removeClass('success-border');isPwd = false;}//else if(!reg.test($(this).val())){//    $(this).addClass('error-border');//    $('.loginTipsSpan').html('密码格式不对!!!');//}else{$(this).addClass('success-border');$(this).removeClass('error-border');$('.loginTipsSpan').html('');isPwd = true;}});$('form').submit(function(){$('.loginTipsSpan').html('');//用户名密码验证通过则提交,验证不通过不提交if(isPwd && isUser){submitForm();//alert('提交成功!')//return true;}else{if(!($('.username').val() == '' || $('.username').val()  == '请输入您的账号')&&($('.password').val() != '')){submitForm();}else{$('.loginTipsSpan').html('用户名或密码不能为空!!!');setCookie('cc', document.getElementById("saveInput").checked,365);//return false;}}})})
</script>
</body>
</html>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/253293.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

AJAX异步请求(Asynchronous Javascript And Xml)

文章目录 1、传统请求及缺点&#xff08;1&#xff09;传统的请求&#xff08;2&#xff09;传统请求存在的问题 2、AJAX概述3、XMLHttpRequest对象4、AJAX GET请求5、AJAX GET请求缓存问题6、AJAX POST请求&#xff08;1&#xff09;案例一&#xff1a;使用AJAX POST请求实现用…

AJAX 异步请求处理

AJAX Asynchronous JavaScript and XML&#xff08;异步的 JavaScript 和 XML&#xff09;。 AJAX 不是新的编程语言&#xff0c;而是一种使用现有标准的新方法。 AJAX 最大的优点是在不重新加载整个页面的情况下&#xff0c;可以与服务器交换数据并更新部分网页内容。 AJA…

如何判断一个请求是否是Ajax异步请求

前言 今天在看项目过程中&#xff0c;发现了一段代码。是用来判断一个请求是否是ajax请求&#xff0c;出于好奇&#xff0c;我研究了一番。 代码预览 /*** 是否是Ajax异步请求* * param request*/public static boolean isAjaxRequest(HttpServletRequest request){String ac…

jquery实现ajax异步请求

前端代码&#xff1a; <html> <head> <meta charset"UTF-8"> <title>异步请求</title> <script type"text/javascript" src"jquery-3.3.1.js"></script> <script type"text/javascript"…

基于深度学习的高精度山羊检测识别系统(PyTorch+Pyside6+YOLOv5模型)

摘要&#xff1a;基于深度学习的高精度山羊检测识别系统可用于日常生活中或野外来检测与定位山羊目标&#xff0c;利用深度学习算法可实现图片、视频、摄像头等方式的山羊目标检测识别&#xff0c;另外支持结果可视化与图片或视频检测结果的导出。本系统采用YOLOv5目标检测模型…

HTML发送异步请求,使用原生JS发送ajax异步请求

Ajax Ajax: Asynchronous javaScript and xml (异步的JavaScript和xml技术)。当我们向服务器发起请求的时候,服务器不会像浏览器响应整个页面,而是只有局部刷新。它是一个异步请求。 请求: 同步请求:只有当一次请求完全结束以后才能够发起另一次请求。 异步请求:不需要其他请…

AJAX 异步请求详细教程

文章目录 AJAX 异步请求简介Jquery 版 Ajax$.ajax() -- Jquery提供的 ajax 函数注册验证用户名是否可用$.get() 与 $.post()Ajax 返回数据类型 JSONjson 简介JSON 对象JSON 数组对象数组混合格式小结 JSON 应用JSON 对象的使用JSON 数组的使用响应的 json 数组数组对象混合格式…

ajax异步请求及案例

ajax异步请求及案例 1、ajax的介绍 前端页面想和后端页面进行数据交互就可以使用ajax。让 javascript 发送异步的 http 请求&#xff0c;与后台服务器通信进行数据的获取&#xff0c;实现局部刷新。在html页面使用ajax需要在web服务器环境下运行, 一般向自己的web服务器发送a…

AJAX 异步请求数据

AJAX 的全称是Asynchronous JavaScript and XML&#xff0c;其中&#xff0c;Asynchronous 是异步的意思&#xff0c;它有别于传统web开发中采用的同步的方式。 JQuery AJAX 应用详见&#xff1a;jQuery ajax AJAX 使用 JavaScript 在 web 浏览器与 web 服务器之间来发送和接…

异步请求-AJAX

什么是同步交互 首先用户向HTTP服务器提交一个处理请求。接着服务器端接收到请求后&#xff0c;按照预先编写好的程序中的业务逻辑进行处理&#xff0c;比如和数据库服务器进行数据信息交换。最后&#xff0c;服务器对请求进行响应&#xff0c;将结果返回给客户端&#xff0c;返…

Ajax

#Ajax 概念&#xff1a; Asynchronous Javascript And XML”&#xff08;异步 JavaScript 和 XML&#xff09;&#xff0c;是指一种创建交互式网页应用的网页开发技术。 1. 异步和同步&#xff1a;客户端和服务器端相互通信的基础上 * 客户端必须等待服务器端的响应。在等待的期…

elementUI中<el-select>下拉框选项过多的页面优化方案——多列选择

效果展示(多列可以配置) 一、icon下拉框的多列选择&#xff1a; 二、常规、通用下拉框的多列选择&#xff1a; 【注】第二种常规、通用下拉框的多列选择&#xff0c;是在第一种的前端代码上删除几行代码就行&#xff08;把icon显示标签删去&#xff09;&#xff0c;所以下面着重…

python+django高校人事管理系统vue

本高校人事管理系统以Django作为框架&#xff0c;Python语言&#xff0c;B/S模式以及MySql作为后台运行的数据库。本系统主要包括以下功能模块&#xff1a;用户、院长、职称申报、工资信息、绩效信息、奖惩信息、招聘、科系分类等模块。 本文着重阐述了高校人事管理系统的分析、…

chatgpt赋能python:Python中提取纯数字的方法

Python中提取纯数字的方法 在数据清洗和数据分析中&#xff0c;经常需要将文本中的数字提取出来&#xff0c;用于后续的计算或统计分析。Python作为一种流行的数据处理语言&#xff0c;提供了多种方法来完成这个任务。 方法一&#xff1a;使用正则表达式 正则表达式是一种强…

spdk记录

spdk记录 hello_bdev命令行参数 往期文章&#xff1a; spdk环境搭建 hello_bdev 代码路径&#xff1a;examples/bdev/hello_world/hello_bdev.c 可执行文件路径&#xff1a;build/examples/hello_bdev 刚开始直接执行hello_bdev显示找不到Malloc0 ./build/examples/hello_b…

FinChat.io,金融领域的chatgpt

投资股票是一个充满挑战的过程,随着市场的起起伏伏,要抓住每一个机会,同时规避各种风险,这需要投资者具有敏锐的洞察力和快速的决策能力。不过现在有好消息,一款人工智能聊天机器人 FinChat.io 诞生了!它能帮助投资者分析市场,挖掘有潜力的股票,并提供买卖的实时建议 --------…

码农翻身——JDBC的诞生

随着 Oracle, Sybase, SQL Server ,DB2, Mysql 等人陆陆续续住进数据库村&#xff0c; 这里呈现出一片兴旺发达的景象&#xff0c; 无数的程序在村里忙忙碌碌&#xff0c; 读写数据库&#xff0c; 实际上一个村落已经容不下这么多人了&#xff0c; 数据库村变成了数据镇。 这…

码农翻身(随笔)

书一直都有在读&#xff0c;我会一直更新博文&#xff0c;欢迎大家前来阅读、指教&#xff01; XML和注解 xml&#xff1a;应用于集中配置的场合&#xff0c;比如数据源的配置&#xff1b; 注解&#xff1a;像Controller、RequestMapping、Transactional这样的注解&#xff…

码农翻身摘录

三次握手:验证双方发信和收信能力问题  第一次握手:京城发信&#xff0c;县衙收到了&#xff0c;此时县衙就会明白&#xff0c;京城的发信能力和自己的收信能力没有问题。  第二次握手:县衙发信&#xff0c;京城收到了&#xff0c;此时京城就会明白&#xff0c;京城的发信和收…

《码农翻身》

大话编程 我是一个线程 我是一个Java class Javascript: 一个屌丝的逆袭 Java:一个帝国的诞生 JSP:一个装配工的没落 TCP/IP 之 大明王朝的邮差 TCP/IP 之 大明内阁 TCP/IP 之 蓟辽督师 CPU 阿甘 CPU 阿甘之烦恼 CPU 阿甘&#xff1a;函数调用的秘密 我是一个网卡 …