jQuery+AJAX技术(简单的用户注册功能)

news2025/3/1 9:28:56

目录

      • 1、jQuery是什么?
      • 2、AJAX是什么?
      • 3、jQuery与AJAX的关系?
        • 使用jQuery实现AJAX示例:
      • 4、jQuery+AJAX技术实现用户注册验证功能。

1、jQuery是什么?

jQuery 是一个快速,小型且功能丰富的JavaScript库它使 诸如HTML文档遍历和操作,事件处理之类的东西、动画和 Ajax 更简单,具有易于使用的 API,可以跨多种浏览器。结合了多功能性和可扩展性,

这是JQuery的官网:https://jquery.com
我们也可以在菜鸟教程上快速入门Jquery:https://www.runoob.com/jquery/jquery-tutorial.html

我们可以在官网下载所需版本的JQuery库到本地文件并通过script引入到自己的页面;
也可以通过 CDN(内容分发网络)引用它,例如:<script src="https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js">

2、AJAX是什么?

AJAX = 异步JavaScript 和 XML (Asynchronous JavaScript and XML)
短地说,在不重载整个网页的情况下,AJAX 通过后台加载数据,并在网页上进行显示,并且实现的是对部分网页的更新,是一种与服务器异步交换数据的技术。


PS:

同步加载异步加载
同步模式,又称阻塞模式,就是指一个进程在执行某个请求的时候,若该请求需要一段时间才能返回信息,那么这个进程将会一直等待下去,直到收到返回信息才继续执行下去。流览器之所以会采用同步模式,是因为加载的js文件中有对dom的操作,重定向,输出document等默认行为,所以同步才是最安全的。通常会把要加载的js放到body结束标签之前,使得js可在页面最后加载,尽量减少阻塞页面的渲染。这样可以先让页面显示出来。异步加载,又叫非阻塞,是指进程不需要一直等下去,而是继续执行下面的操作,不管其他进程的状态。当有消息返回时系统会通知进程进行处理,这样可以提高执行的效率。AJAX技术就是典型的异步操作,可以在不刷新页面的情况下与后端服务器进行数据交互。

同样,可以在菜鸟教程上快速入门传统的AJAX技术(未利用JQuery)实现方法:https://www.runoob.com/ajax/ajax-tutorial.html

3、jQuery与AJAX的关系?

编写常规的 AJAX 代码并不容易,并且不同的浏览器对 AJAX 的实现并不相同。
而JQuery中提供了许多与Ajax相关的便利方法,通过 jQuery AJAX 方法,能够使用 HTTP Get 和 HTTP Post 从远程服务器上请求文本、HTML、XML 或 JSON,同时您能够把这些外部数据直接载入网页的被选元素中。

学习参考博客:https://blog.csdn.net/chenHaiJaheike/article/details/89045939 👍
JQuery官网关于AJAX的学习:https://learn.jquery.com/ajax/

使用jQuery实现AJAX示例:

// Using the core $.ajax() method
$.ajax({
 
    // The URL for the request
    url: "post.php",
 
    // The data to send (will be converted to a query string)
    data: {
        id: 123 //数据类型可以是对象或查询字符串
    },
 
    // Whether this is a POST or GET request
    type: "GET",
 
    // The type of data we expect back
    dataType : "json",
    
    "success" : function(obj){
    		},
	
	"error" : function() {
				alert("验证错误");
			}
})
  // Code to run if the request succeeds (is done);
  // The response is passed to the function
  .done(function( json ) {
     $( "<h1>" ).text( json.title ).appendTo( "body" );
     $( "<div class=\"content\">").html( json.html ).appendTo( "body" );
  })
  // Code to run if the request fails; the raw request and
  // status codes are passed to the function
  .fail(function( xhr, status, errorThrown ) {
    alert( "Sorry, there was a problem!" );
    console.log( "Error: " + errorThrown );
    console.log( "Status: " + status );
    console.dir( xhr );
  })
  // Code to run regardless of success or failure;
  .always(function( xhr, status ) {
    alert( "The request is complete!" );
  });

4、jQuery+AJAX技术实现用户注册验证功能。

浏览器客户端与服务器端进行数据交互,一种是提交表单通过action属性(或地址栏传值)将数据从前端传输到后端,此时服务器端可以通过页面重定向等方式刷新页面使客服端做出响应,这是同步的。另一种就是这里用到的AJAX异步传输数据,同时接收服务器返回数据,不会刷新页面,能保留之前的数据,不影响页面的继续操作。

(1)首先,用HTML和CSS编写一个用于用户注册功能的JSP页面,页面核心代码如下:

<div class="account">
    <div class="container">
        <div class="register">
            <form action="" method="post">
                <div class="register-top-grid">
                    <h3>注册新用户</h3>
                    <div class="input">
                        <span>用户名 <label style="color:red;">*</label></span>
                        <input type="text" name="username" placeholder="请输入用户名" required="required"><span id="sp"></span>
                    </div>
                    <div class="input">
                        <span>邮箱 <label style="color:red;">*</label></span>
                        <input type="text" name="email" placeholder="请输入邮箱" required="required">
                    </div>
                    <div class="input">
                        <span>密码 <label style="color:red;">*</label></span>
                        <input type="password" name="password" placeholder="请输入密码" onblur="onBlur1(this)" required="required">
                    </div>
                    <div class="input">
                        <span>确认密码 <label style="color:red;">*</label></span>
                        <input type="password" name="password2" placeholder="请输入密码" onblur="onBlur2(this)" required="required"><span id="tip" style="color: crimson"> </span>
                    </div>
                    <div class="clearfix"> </div>
                </div>
                <div class="register-but text-center">
                    <input type="submit" value="提交" id="submit">
                    <div class="clearfix"> </div>
                </div>
            </form>
            <div class="clearfix"> </div>
        </div>
    </div>
</div>

引入用到的相关CSS文件和JavaScript文件:

<title>用户注册</title>
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <link type="text/css" rel="stylesheet" href="css/bootstrap.css">
    <link type="text/css" rel="stylesheet" href="css/style.css">
    <script type="text/javascript" src="js/jquery.min.js"></script>
    <script type="text/javascript" src="js/bootstrap.min.js"></script>

JSP页面的运行界面如下:
在这里插入图片描述

(2)编写JavaScript代码进行注册验证:
给输入用户名的文本框添加失去焦点事件blur()使用jquery进行绑定input[name=‘username’],将文本框的值username通过AJAX传输到后台服务器的ControllerServlet2中进行验证,同时接收后台服务器返回的响应数据,判断用户名是否已经存在:

	$("input[name='username']").blur(function () {
        let username = $(this).val();
        if(username==""){
            $("#sp").text('用户名不能为空').css("color","red");
        }
        else {
            $.ajax({
                url:"http://localhost:8081//WebGIS_1/ControllerServlet2",     //后台的action  在web.xml中  验证的Servlet路径
                type:"POST",     //以post方法提交数据给服务器
                data:{name:username},      //传输的数据
                //将异步请求改为同步
                // async:false,
                //如果正常的访问了后台,就执行这个success中的function函数
                success:function (obj) {           //回调函数
                    if(obj == "1"){
                        $("#sp").text('用户名已存在').css("color","red");
                        //在ajax中return是不会返回值得,而是结束掉整个ajax
                    }else{
                        $("#sp").text('√用户名通过验证').css("color","green");
                        // location.href='login.jsp';
                    }
                },
                error:function (xhr) {
                    alert("注册时产生未知错误:"+xhr.status);
                }
            });
        }
    })

在ControllerServlet2中接收前端页面传输过来的值username,并将其与数据库中查询到的用户名信息进行验证判断,返回验证结果:
在这里插入图片描述

用户名已存在数据库表中时,用户名验证效果如下:
在这里插入图片描述

用户名不存在数据库表中时,用户名验证效果如下:
在这里插入图片描述

客户端页面接收到了服务器传输回来的数据并作出了响应结果,此时页面并没有刷新,即输入的用户名仍然存在输入框中,这里就体现了AJAX的异步功能)

给输入邮箱的文本框添加失去焦点事件blur()使用jquery进行绑定input[name=‘email’],通过正则表达式对邮箱格式进行验证,如下图:

    //给账号的文本框添加失去焦点事件        使用jquery绑定  input[name='username']
    $("input[name='email']").blur(function () {
        //获得用户输入的账号  账号只能是长度4-12位的数字、字母、下划线
        let email = $(this).val();    //let与var用法一致  获取输入的username
        if(email==""){
            alert("邮箱不能为空");
            return;
        }else {
            //验证邮箱的正则表达式
            let reg = /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(\.[a-zA-Z0-9_-])+/;
            if(!reg.test(email)){
                alert("邮箱不合法!");
                return;//return可以结束掉整个方法
            }
            return;
        }
    });

当邮箱格式不正确时,页面作出如下响应:
在这里插入图片描述

给输入密码的文本框添加失去焦点事件blur(),一个用于判断输入的密码是否满足格式要求;一个用于判断两次输入的密码是否一致:

   function onBlur1(x){
        var password=document.getElementsByName('password')[0].value;
        var psg=/^(?![a-zA-Z]+$)(?!\d+$)(?![^\da-zA-Z\s]+$).{1,9}$/;
        if(!psg.test(password)){
            alert("密码格式不符合:由字母、数字、特殊字符,任意2种组成,1-9位")
            return;
        }
        return;

    }
    function onBlur2(x){
        var p1=document.getElementsByName('password')[0].value;
        var p2=document.getElementsByName('password2')[0].value;
        if(p1 !== p2){
            document.getElementById('tip').innerHTML='两次密码不一致';
        }else {
            document.getElementById('tip').innerHTML=' ';
        }
    }

当密码格式不符合要求时的页面响应:
在这里插入图片描述

当两次输入的密码不一致时的页面响应:
在这里插入图片描述

给提交按钮添加鼠标点击事件onclick(),对填写的信息进行验证,填写完整后将输入框中的数据传入到ControllerServlet3后端服务器,存入到数据库中,并接收服务器响应的返回结果:

    submit.onclick=function(){
        var p0=document.getElementsByName('username')[0].value;
        var p1=document.getElementsByName('password')[0].value;
        var p2=document.getElementsByName('password2')[0].value;
        var p3=document.getElementsByName('email')[0].value;
        if(p0==""||p1==""||p2==""||p3==""){
            alert("请填写完整信息!")
            return
        }else {
            alert("提交成功!")
            $.post("http://localhost:8081//WebGIS_1/ControllerServlet3",{
                "username":$("input[name='username']").val(),
                "password":$("input[name='password']").val(),
                "email":$("input[name='email']").val()
            },function (data) {
                if (data == "ok"){
                    alert("ok!录入数据库")
                    // if(confirm("恭喜您注册成功 是否跳转登录界面?")){
                        window.location.href = "login.jsp";
                }else {
                    alert("data未录入数据库")
                }
            })
        }
    }

后端服务器ControllerServlet3的核心代码:
在这里插入图片描述

数据传输到服务器时的页面响应:
在这里插入图片描述

数据被成功存入服务器后的页面响应:
在这里插入图片描述

打开数据库表查看并确认输入的用户信息已经被成功存入数据库表中:
在这里插入图片描述


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

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

相关文章

gradle编译项目报错Execution failed for task ‘:bootJar‘,‘:mainClass‘,‘:compileJava‘.

目录1.问题2.问题查找3.更多1.问题 idea导入Gradle管理的SpeingBoot多模块项目&#xff0c;依赖下载不下来&#xff0c;执行编译报错 报错信息&#xff1a; 2.问题查找 首先怀疑是不是idea的版本与gradle版本冲突&#xff0c;我用的是idea2022.3.3&#xff0c;gradle是7.5.…

做一个内心强大的人

想想类似如下这种心灵鸡汤&#xff0c;本不太愿意在这个平台发布&#xff0c;但是偶尔喝点又何尝不可&#xff01; 语录摘抄/分享&#xff1a; 1、你开始炫耀自己&#xff0c;往往都是灾难的开始&#xff0c;就像老子在《道德经》里写到: 光而不耀&#xff0c;静水流深。 2、…

汽车电子相关术语介绍

一、相关术语介绍 1、汽车OTA 全称“Over-The-Air technology ”&#xff0c;即空中下载技术&#xff0c;通过移动通信的接口实现对软件进行远程管理&#xff0c;传统的做法到4S店通过整车OBD对相应的ECU进行软件升级。OTA技术最早2000年出现在日本&#xff0c;目前通过OTA方式…

HashMap源码解析超详细

HashMap源码详解1、概述2、源码解析1.HashMap底层存储结构问题一: 为什么直接就用数组呢&#xff1f;问题二&#xff1a;什么是红黑树呢&#xff1f;问题三&#xff1a;为什么不一下子把整个链表变为红黑树呢&#xff1f;2.HashMap的重要成员变量3.构造方法解析4.Put方法解析取…

渗透测试工具库-收藏版

1.前言 浩二一开始做渗透测试的时候收集超多的资料和工具&#xff0c;一直在文档里吃灰。今天全部放出来分享给大家&#xff0c;需要的自己收藏。 2.漏洞练习平台 WebGoat漏洞练习平台&#xff1a; https://github.com/WebGoat/WebGoat webgoat-legacy漏洞练习平台: http…

好程序员:Java书籍推荐,程序员必看的5本Java书籍,赶紧收藏!

今天好程序员给大家推荐5本Java书籍&#xff0c;各大高校都在使用&#xff08;具体名单如下&#xff09;&#xff0c;所有学习Java的程序员都不应该错过&#xff01; 第一本Java书籍《Java EE&#xff08;SSM框架&#xff09;企业应用实战》 本书全面介绍了JavaEE中MyBatis、Sp…

ChatGLM-6B论文代码笔记

ChatGLM-6B 文章目录ChatGLM-6B前言一、原理1.1 优势1.2 实验1.3 特点&#xff1a;1.4 相关知识点二、实验2.1 环境基础2.2 构建环境2.3 安装依赖2.4 运行2.5 数据2.6 构建前端页面3 总结前言 Github&#xff1a;https://github.com/THUDM/ChatGLM-6B 参考链接&#xff1a; ht…

“QT 快速上手指南“ 之 计算器(二)

文章目录前言一、QT 基本组件用法介绍&#xff1a;1. QLabel &#xff1a;2. QPushButton :3. QLineEdit:二、坐标系统三、窗口部件的大小设置1. setSize( ) 函数&#xff1a;2. resize( )函数&#xff1a;3. setFixedSize( )函数:4. setFixedWidth( ) 和 setFixedHeight( )函数…

大一被忽悠进了培训班

大家好&#xff0c;我是帅地。 最近我的知识星球开始营业&#xff0c;不少大一大二的小伙伴也是纷纷加入了星球&#xff0c;并且咨询的问题也是五花八门&#xff0c;反正就是&#xff0c;各种迷茫&#xff0c;其中有一个学弟&#xff0c;才大一&#xff0c;就报考培训班&#…

命令注入概述

概述命令注入即 Command Injection。是指在开发需求中&#xff0c;需要调用一些系统的命令来完成某些特定的功能。当未对用户输入的参数进行严格的过滤时&#xff0c;则有可能发生命令注入。攻击者可以通过提交恶意构造的参数破坏命令语句结构&#xff0c;从而达到执行恶意命令…

九大经典算法

1. 冒泡排序&#xff08;Bubble Sort&#xff09; 两个数比较大小&#xff0c;通过两两交换&#xff0c;像水中的泡泡一样&#xff0c;较大的数下沉&#xff0c;较小的数冒起来。 算法描述&#xff1a; 1.比较相邻的元素。如果第一个比第二个大&#xff0c;就交换它们两个&a…

界面组件DevExtreme v22.2 - Pivot Grid、UI组件升级

DevExtreme拥有高性能的HTML5 / JavaScript小部件集合&#xff0c;使您可以利用现代Web开发堆栈&#xff08;包括React&#xff0c;Angular&#xff0c;ASP.NET Core&#xff0c;jQuery&#xff0c;Knockout等&#xff09;构建交互式的Web应用程序。从Angular和Reac&#xff0c…

【Golang入门】简介与基本语法学习

下面是一篇关于Golang新手入门的博客&#xff0c;记录一下。&#xff08;如果有语言基础基本可以1小时入门&#xff09; 一、什么是Golang&#xff1f; Golang&#xff08;又称Go&#xff09;是一种由谷歌公司开发的编程语言。它是一种静态类型、编译型、并发型语言&#xff0…

从Hive源码解读大数据开发为什么可以脱离SQL、Java、Scala

从Hive源码解读大数据开发为什么可以脱离SQL、Java、Scala 前言 【本文适合有一定计算机基础/半年工作经验的读者食用。立个Flg&#xff0c;愿天下不再有肤浅的SQL Boy】 谈到大数据开发&#xff0c;占据绝大多数人口的就是SQL Boy&#xff0c;不接受反驳&#xff0c;毕竟大…

离散数学_第二章:基本结构:集合、函数、序列、求和和矩阵(1)

集合与函数2.1 集合 2.1.1 集合的基本概念 2.1.2 集合的表示方法 2.1.3 文氏图 2.1.4 证明集合相等 2.1.5 集合的大小 ——基 2.1.6 幂集 2.1.7 集族、指标集 2.1.8 笛卡尔积 2.1.9 容斥原理2.1 集合 2.1.1 集合的基本概念 定义1&#xff1a;集合 是不同对象的一个无序的聚…

23黑马vue

1、Vue概述 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"widthdevice-width, …

铁路轨道不平顺数据分析与预测

铁路轨道不平顺数据分析与预测 1.引言 铁路轨道作为铁行车的基础设施&#xff0c;是铁路线路的重要组成部分。随着经济和交通运输业的发展&#xff0c;我国的铁路运输正朝着高速和重载方向迅速发展&#xff0c;与此同时&#xff0c;轨道结构承受来自列车荷载、运行速度的冲击…

Elasticsearch 学习+SpringBoot实战教程(三)

需要学习基础的可参照这两文章 Elasticsearch 学习SpringBoot实战教程&#xff08;一&#xff09; Elasticsearch 学习SpringBoot实战教程&#xff08;一&#xff09;_桂亭亭的博客-CSDN博客 Elasticsearch 学习SpringBoot实战教程&#xff08;二&#xff09; Elasticsearch …

QT笔记——QtXlsx操作Execl

使用第三方库QtXlsx来操作execl 环境&#xff1a;vs2019 qt5.12.2 第一步&#xff1a; 我们需要找到对应的下载QtXlsx的第三方库的下载路径&#xff1a; QtXlsx下载 第二步&#xff1a; 编译我们的QtXlsx&#xff0c;看了网上有很多中的例子&#xff0c;我这边暂时只举例 vsqt…

一个评测模型+10个问题,摸清盘古、通义千问、文心一言、ChatGPT的“家底”!...

‍数据智能产业创新服务媒体——聚焦数智 改变商业毫无疑问&#xff0c;全球已经在进行大模型的军备竞赛了&#xff0c;“有头有脸”的科技巨头都不会缺席。昨天阿里巴巴内测了通义千问&#xff0c;今天华为公布了盘古大模型的最新进展。不久前百度公布了文心一言、360也公布了…