Ajax判断用户名是否可用

Ajax的简介

01展示效果并认识Ajax
方案1:传统方案
提交表单,服务器端处理,错误后跳转到注册页面,同时显示错误信息。返回客户端的是整个注册页面。
缺点:较大的网络流量,用户体验不好
方案2:使用Ajax方案。
用户名的确认和用户书写其他表单项可以同时进行;返回客户端的至少错误信息;
优点:较小的网络流量,用户体验好

理解示意图

在这里插入图片描述

实现步骤

给用户名文本框绑定onblur事件
开发服务器端判断用户的是否可用功能
使用Ajax完成功能
创建XMLHttpRequest对象
建立到服务器的连接
设置服务器在完成后要运行的回调函数
发送请求

代码实现

save.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><base href="<%=request.getContextPath()+"/"%>"><title>注册页面</title><script type="text/javascript">var   xhr;function  checkNC() {var nc = document.getElementById("nc").value;if(nc==null||nc==''){document.getElementById("nc_span").innerText="用户名不能为空";}else {//发送ajax请求//[1]创建XMLHttpRequest对象xhr=new XMLHttpRequest();//[2]和服务器建立连接//xhr.open(method,url,acy,username,passward);xhr.open("get","RegisterServlet?nc="+nc,true);//[3]执行回调函数xhr.onreadystatechange=process;//[4]发送请求数据xhr.send(null);}}function  process() {//接受ajax 的响应内容var   text= xhr.responseText;//把响应回的内容放到span中document.getElementById("nc_span").innerText=text;}</script>
</head>
<body><h3>用户注册</h3>
<form><p>昵称:<input type="text" name="nc" id="nc" onblur="checkNC()"/><span id="nc_span"></span></p><p>真是姓名:<input type="text" name="uname"/></p><p>密码:<input type="text" name="pwd"/></p><p>描述:<input type="text" name="desc"/></p><p><input type="submit" value="注册"/></p></form>
</body>
</html>

RegisterServlet.java

@WebServlet("/RegisterServlet")
public class RegisterServlet  extends HttpServlet {@Overrideprotected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {resp.setContentType("text/html;charset=utf-8");//[1]接受页面的数据String nc = req.getParameter("nc");System.out.println("昵称:"+nc);//[2]数据的处理-->返回结果boolean   flag=false;if("sxt".equals(nc)){flag=true;}//[3]根据返回结果做出响应PrintWriter out = resp.getWriter();if(flag){//证明用户名在数据库存在-->用户不可使用out.print("用户名占用");}else{//证明用户名子啊数据库不存在-->用户名可用out.print("用户名可用");}}
}

ajax内容总结

A、如何创建XHR对象

 if(window.ActiveXObject){//IExhr = new ActiveXObject("Microsoft.XMLHTTP");}else {//其他浏览器xhr=new XMLHttpRequest();}

B、和服务器建立连接

  GET:xhr.open("get","SaveServlet?uname="+val,true);xhr.send(null);POST:xhr.open("post","SaveServlet",true);xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded")xhr.send("uname="+val)

C、后台如何接受数据

 String uname = req.getParameter("uname");

D、后台如何给前台做出响应

 out.print("用户名占用");

E、前台如何接受响应的数据?

    var  text= xhr.responseText;

F、

 xhr.readyState  0  1 2  3  4xhr.status  200   404   500 ..局部刷新   异步提交

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

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

相关文章

学习分布式不得不会的ACP理论

转载自 学习分布式不得不会的ACP理论 2000年7月&#xff0c;加州大学伯克利分校的Eric Brewer教授在ACM PODC会议上提出CAP猜想。2年后&#xff0c;麻省理工学院的Seth Gilbert和Nancy Lynch从理论上证明了CAP。之后&#xff0c;CAP理论正式成为分布式计算领域的公认定理。 无…

浅谈我的读书史

点击上方蓝字关注我们本文是【雄雄的小课堂】原创的第 137 篇文章昨日晚间&#xff0c;一个朋友突然问我&#xff1a;“读书真的会有所收获吗&#xff1f;”“读书&#xff0c;真的会改变一个人吗&#xff1f;”刚看到这个问题时&#xff0c;我有点愕然&#xff0c;想着为啥会突…

.NetCore+Jexus代理+Redis模拟秒杀商品活动

开篇叙 &#xff0c;顺手点个推荐也不错&#xff1b; a. 秒杀流程 b. 封装StackExchange.Redis的使用类 c. Ubuntu16.04上使用Jexus搭建代理完成分布式部署 d. NetCore写实时监控队列服务 秒杀架构设计图︿(&#xffe3;︶&#xffe3;)︿三幅 1. 一般业务性架构 2. 后端…

如何快速搭建一个免费的,无限流量的Blog

转载自 如何快速搭建一个免费的&#xff0c;无限流量的Blog 喜欢写Blog的人&#xff0c;会经历三个阶段。 第一阶段&#xff0c;刚接触Blog&#xff0c;觉得很新鲜&#xff0c;试着选择一个免费空间来写。 第二阶段&#xff0c;发现免费空间限制太多&#xff0c;就自己购买域…

切记!构造函数里面别一定不要初始化其他类,踩过坑的都知道

点击上方蓝色关注我们&#xff01;先来看看什么是构造函数&#xff08;方法&#xff09;&#xff1a;是一种特殊的方法&#xff0c;特殊之处就在于它没有返回类型&#xff0c;void也不可以有。且方法名与类名完全相同。主要是用来创建对象时初始化对象&#xff0c;也就是为对象…

线程安全问题解决

方式一(同步代码块) synchronized(同步监视器){ //需要被同步的代码 } 说明&#xff1a;1.操作共享数据的代码&#xff0c;即为需要被同步的代码。 -->不能包含代码多了&#xff0c;也不能包含代码少了。 2.共享数据&#xff1a;多个线程共同操作的变量。比如&#xff1a;…

Chrome DevTools 调研笔记

1 说明 此篇文章针对Chrome DevTools常用功能进行调研分析。描述了每个功能点能实现的功能、应用场景和详细操作。 2 Elements 2.1 功能 检查和实时更新页面的HTML与CSS 在 Elements 面板中检查和实时编辑 DOM 树中的任何元素。在 Styles 窗格中查看和更改应用到任何选…

java中你知道的这四种代码块吗?

点击上方蓝字关注我们大家好&#xff0c;我是雄雄&#xff0c;今天给大家分享的是&#xff1a;java中的四种代码块什么叫代码块&#xff1f;代码块就是将多行代码封装到一个“{}”中&#xff0c;形成一个独立的代码区&#xff0c;这就构成了代码块&#xff0c;一般常见的代码块…

DDD理论学习系列(5)-- 统一建模语言

1.引言 上一节讲解了领域模型&#xff0c;领域模型主要是将业务中涉及到的概念以面向对象的思想进行抽象&#xff0c;抽象出实体对象&#xff0c;确定实体所对应的方法和属性&#xff0c;以及实体之间的关系。然后将这些实体和实体之间的关系以某种形式&#xff08;比如UML、图…

java中你知道这四种代码块吗?

大家好&#xff0c;我是雄雄&#xff0c;今天给大家分享的是&#xff1a;java中构造代码块的用法。 什么叫代码块&#xff1f;代码块将多行代码封装到一个{}中&#xff0c;形成一个独立的代码区&#xff0c;这就够成了代码块&#xff0c;一般常见的代码块是这样的&#xff1a; …

jzoj2152-终极数【堆】

题目&#xff08;复杂&#xff09; 给定一个长度为n的序列a&#xff0c;试求出对于序列a的每一个前缀的终极数x&#xff0c;使得 最小&#xff0c;试求出终极数t&#xff08;如若有多个终极数t&#xff0c;只需输出最小的那个&#xff09; 正解 其实就是求中位数… 输入 …

谈谈准确率(P值)、召回率(R值)及F值

转载自 谈谈准确率&#xff08;P值&#xff09;、召回率&#xff08;R值&#xff09;及F值 谈谈准确率&#xff08;P值&#xff09;、召回率&#xff08;R值&#xff09;及F值 一直总是听说过这几个词&#xff0c;但是很容易记混&#xff0c;在这里记录一下。希望对大家理解…

线程创建两种方式

方式一(继承于Thread类) 创建一个继承于Thread类的子类重写Thread类的run() --> 将此线程执行的操作声明在run()中创建Thread类的子类的对象通过此对象调用start() package com.wdl.java;//1. 创建一个继承于Thread类的子类 class MyThread extends Thread {//2. 重写Thre…

在ASP.NET CORE 2.0使用SignalR技术

一、前言 上次讲SignalR还是在《在ASP.NET Core下使用SignalR技术》文章中提到&#xff0c;ASP.NET Core 1.x.x 版本发布中并没有包含SignalR技术和开发计划中。时间过得很快&#xff0c;MS已经发布了.NET Core 2.0 Preview 2 预览版&#xff0c;距离正式版已经不远了&#xf…

java中常见的几种内部类,你会几个?(未完)

点击上方蓝色关注我们&#xff01;大家好&#xff0c;我是雄雄&#xff0c;今天给大家介绍的是java中的几种内部类。java中常见的几个内部类&#xff0c;你会几个&#xff1f;我会四个&#xff01;在看每个新知识点时&#xff0c;我们不禁有这样或者那样的疑问&#xff0c;比如…

通俗理解信息熵

转载自 通俗理解信息熵 通俗理解信息熵 前段时间德川和我讲解了决策树的相关知识&#xff0c;里面德川说了一下熵&#xff0c;今天整理了一下&#xff0c;记录下来希望对大家理解有帮助~ 1、信息熵的公式 先抛出信息熵公式如下&#xff1a; 其中代表随机事件X为的概率&…

.NET Core 2.0 Preview 2为开发人员带来改进

Microsoft发布了.NET Core 2第二个预览版&#xff08;Preview 2&#xff09;&#xff0c;该版本可用于Mac OS X、Linux和Windows平台。Preview 2首次给出了对所有平台上各种软件包和安装程序的统一命名模式。所有的运行时文件将以"dotnet-运行时名称”命名&#xff0c;而S…

java中,剩下的这两个内部类不太好理解!

点击上方蓝色关注我们&#xff01;大家好&#xff0c;我是雄雄&#xff0c;今天我们接着昨天的分享&#xff0c;将剩余的两个内部类&#xff08;方法内部类和匿名内部类&#xff09;结束掉&#xff0c;这两个内部类都不太好理解。昨天的推文&#xff1a;java中常见的几种内部类…

【jzoj】2018.2.3NOIP普及组——D组模拟赛

前言 万年D组系列… 正题 题目1&#xff1a;数池塘&#xff08;jzoj1898&#xff09; 有一个地方有一些积水&#xff0c;连着的积水是一个池塘&#xff0c;求池塘数。 输入 第1行&#xff1a;由空格隔开的两个整数&#xff1a;N和M 第2..N1行&#xff1a;每行M个字符代表…