欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

ajax实现简单实时验证功能

程序员文章站 2022-04-28 23:18:54
什么是ajax ajax 即“asynchronous javascript and xml”(异步 javascript 和 xml),是指一种创建交互式网页应用的网页...

什么是ajax

ajax 即“asynchronous javascript and xml”(异步 javascript 和 xml),是指一种创建交互式网页应用的网页开发技术。

ajax = 异步 javascript 和 xml(标准通用标记语言的子集)。

ajax 是一种用于创建快速动态网页的技术。

ajax 是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。

 通过在后台与服务器进行少量数据交换,ajax 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。

传统的网页(不使用 ajax)如果需要更新内容,必须重载整个网页页面。

这是百度对它的定义,足够详细。
 值得补充的一点是对异步的理解,异步是相对于同步来说的,在这里他们指的是服务器和浏览器的交互模式。

 同步,每次请求发出之后,用户操作即被阻塞,必须要求返回响应后继续操作。而异步指的是发出请求后,用户无需等待响应,一切由ajax来实现,无需进行刷新网页就可以局部更新数据。提高了俩端的沟通效率。

来个小demo

做一个无刷新验证表单的demo,在对话框中输入用户名,在后台进行验证,使用ajax技术。

项目结构,使用maven构建

login.jsp

<%@ page contenttype="text/html;charset=utf-8" language="java" iselignored="false" %>
<html>
<head>
  <title>login</title>
</head>
<body>

欢迎登陆:

    用户名:<input type="text" name="username" id="username" onchange="callserver()"/>
    <!-- 显示提示信息 -->
    <div id="msg"></div>
    <!-- 在jsp页面中引入js,绝对路径的方式 -->
    <script src="${pagecontext.request.contextpath}/js/main.js"></script>
</body>
</html>

main.js

alert("use ajax!")
//创建xmlhttprequest对象,在不同浏览器
function createxmlhttp() {
  if(window.xmlhttprequest){
    // ie7+, firefox, chrome, opera, safari 浏览器执行代码
    xmlhttp = new xmlhttprequest();
  }else {
    // ie6, ie5 浏览器执行代码
    xmlhttp = new activexobject("microsoft.xmlhttp");
  }
  return xmlhttp;
}
function callserver() {
  var username = document.getelementbyid("username").value;
  // 判断为空
  if ((username == null) || (username == "")) return;
  var xmlhttp = createxmlhttp();
  // 构建请求url
  var url = "/loginservlet"+"?"+"username="+username;
  //状态码改变调用事件
  xmlhttp.onreadystatechange = function () {
    //正常返回,替换msg内容
    if(xmlhttp.readystate == 4 && xmlhttp.status == 200){
      document.getelementbyid("msg").innerhtml = xmlhttp.responsetext;
    }
  }
  //异步提交请求
  xmlhttp.open("get",url,true);
  //发送请求
  xmlhttp.send();
}

web.xml

<!doctype web-app public
 "-//sun microsystems, inc.//dtd web application 2.3//en"
 "http://java.sun.com/dtd/web-app_2_3.dtd" >
<web-app>
 <display-name>archetype created web application</display-name>
 <welcome-file-list>
  <welcome-file>index.jsp</welcome-file>
 </welcome-file-list>
 <servlet>
  <servlet-name>loginservlet</servlet-name>
  <servlet-class>com.lbw.servlet.loginservlet</servlet-class>
 </servlet>
 <servlet-mapping>
  <servlet-name>loginservlet</servlet-name>
  <url-pattern>/loginservlet</url-pattern>
 </servlet-mapping>
</web-app>

loginservlet.java

package com.lbw.servlet;
import javax.servlet.servletexception;
import javax.servlet.annotation.webservlet;
import javax.servlet.http.httpservlet;
import javax.servlet.http.httpservletrequest;
import javax.servlet.http.httpservletresponse;
import java.io.ioexception;
import java.io.printwriter;
/**
 * 后端使用servlet处理请求
 */
public class loginservlet extends httpservlet {
  protected void dopost(httpservletrequest request, httpservletresponse response) throws servletexception, ioexception {
    //设置编码和响应头
    request.setcharacterencoding("utf-8");
    response.setcontenttype("text/xml;charset=utf-8");
    response.setheader("cache-control", "no-cache");
    //获取参数
    string username = request.getparameter("username");
    string msg = "";
    if("lbw".equals(username)){
      msg = "名称正确";
    }else {
      msg = "名称错误";
    }
    printwriter out = response.getwriter();
    out.println(msg);
  }
  protected void doget(httpservletrequest request, httpservletresponse response) throws servletexception, ioexception {
    dopost(request,response);
  }
}

开始测试

输入localhost:8888/login.jsp,弹出窗口

 代表在jsp中引入js成功

在输入框输入测试数据

 由servlet中逻辑决定,返回错误信息

 由servlet中逻辑决定,返回成功信息

由此,初步实现了ajax异步请求,达到了实时验证的要求

一些小细节

1.在使用maven构建项目,注意project structure -> facets,这里设置web.xml和webapp的路径,idea会使用到

2.在引入js时,注意使用相对路径的方式来进行映入,并且用到el表达式要开启iselignored="false"·`避免没有解析。

总结

以上所述是小编给大家介绍的ajax实现简单实时验证功能,希望对大家有所帮助