AJAX异步请求判断用户名是否符合要求

这篇博客介绍了Ajax在网页中的应用,通过一个简单的注册页面示例展示了如何利用Ajax进行异步数据传输,实现在用户输入用户名时即时检查用户名是否可用,避免了页面刷新。在JavaScript中定义了创建XMLHttpRequest对象、处理请求和响应的函数,Servlet处理了从服务器端返回的验证结果。Ajax请求的五个步骤包括创建对象、设置请求、发送数据、监听状态和接收响应。
摘要由CSDN通过智能技术生成

一、ajax的作用

ajax实现了浏览器网页与服务器的异步传输,在不需要重新加载网页的情况下可以更新网页内容,例如,输入用户名,在不点击提交的情况下就可以检查到用户名的输入是否符合规范!

二、代码展示

register.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>注册页面</h1>
<form action="registerServlet" method="get" onsubmit="checkform()">
用户名:<input type="text" id="username" name="user" onchange="chuli()"><span id="err"></span>
密码:<input type="password" id="pwd">
</form>


<script>
var xmlhttp;
var flag;
//1.创建对象
function creatObject(){
	if (window.XMLHttpRequest)
	  {// code for IE7+, Firefox, Chrome, Opera, Safari
	  xmlhttp=new XMLHttpRequest();
	  }
	else
	  {// code for IE6, IE5
	  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
	  }
}

//2.处理请求
function chuli(){
	creatObject();
	var username = document.getElementById("username").value;
	xmlhttp.open("GET","TestAjax?username="+username,true);
	xmlhttp.setRequestHeader("If-Modified-Since", "0");//get清空缓存
	xmlhttp.send();
	//进入响应状态
	xmlhttp.onreadystatechange=back;
}

//3.处理响应
function back(){
	 if (xmlhttp.readyState==4 && xmlhttp.status==200){
		 var msg = xmlhttp.responseText;
		 if(msg=="success"){
			 err.innerHTML="该用户名可以使用";
			 flag=true;
		 }else{
			 alert("用户名有误!请重新输入");
			 //1.清空文本框内容
		  document.getElementById("username").value="";
			 flag=false;
		 }
	 }
	 }

function checkform(){
	return flag;
}
</script>
</body>
</html>

TextAjax.java

package com.Servlet;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class TestAjax
 */
@WebServlet("/TestAjax")
public class TestAjax extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public TestAjax() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		//编码
		response.setContentType("text/html;charset=utf-8");
		
		String username = request.getParameter("username");
		if(("admin".equals(username))) {
			response.getWriter().write("success");
		}else {
			response.getWriter().write("error");
		}
		
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request, response);
	}

}

三、运行结果

在这里插入图片描述

四、ajax请求的五个步骤

1.创建一个XMLHttpRequest异步对象
2.设置请求对象与请求地址
3.用send发送数据
4.监听状态变化
5.接收返回的数据

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值