`

Ajax的常用技巧(1)----实现表单数据验证

    博客分类:
  • Ajax
阅读更多

 为了保证信息的有效性和正确性,防止数据的错误和无效,在使用数据之前,通常要对浏览者在客户端输入的数据进行验证。但是这种处理方式并不能解决所有的验证问题,例如,在进行用户信息注册时,客户端只能实现类似是否填写了必要的信息,长度是否满足需求等基本的有效性检查,但是对于所填写的用户信息是否已经被占用等诸如此类的检查,在客户端脚本中是没有办法实现的。
同时,如果按照传统的方式将此类验证逻辑放在服务端实现,也会因为面临需要整个页面刷新的问题,而使得问题不能以直观的方式迅速显示在用户面前。借助Ajax技术,在异步交互的前提下,调用服务器端事先编写好的验证逻辑,可以很好的解决此问题。
数据的验证有两方面的含义,一方面是数据格式正确性的验证;一种是数据数值的验证。通常数据格式的验证都是在客户端进行,而数据数值的验证在服务器端进行。在使用Ajax技术进行数据验证时,应该确保数据格式验证要优先于数据数字验证。
现在创建一个实例,以显示Ajax技术的数据验证功能。该实例验证分为两部分,一部分是数据格式验证;一部分是数据数值验证。为了更加有效地反应表单数据验证,这里采用了数据库表中的数据验证。
注意:为了减少程序操作的复杂度,突出Ajax表单中的数据验证功能。这里采用了Access数据库。


1,服务器端代码


该实例服务器端代码主要具有两个功能,首先查询客户端传递的名称在数据库中是否存在,如果存在,则不允许数据插入到数据库中;如果查询数据不存在,则向数据库表中插入数据。该实例需要使用数据库操作,故单独创建一个jsp文件链接数据。打开记事本,输入下列代码:

<%@ page language="java" import="java.util.*,java.io.File,java.sql.*" pageEncoding="GBK"%>
<%@page contentType="text/html;charset=gb2312"%>
<%
 int status=0;
  String name=request.getParameter("name");
  name=new   String(name.getBytes("ISO-8859-1"), "UTF-8"); 
 //  out.print(name);
  String insertSql="insert into test (NAME) values ('"+name+"')";
  String sql="select * from test where NAME='"+name+"'";
 String   dbUr1="jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=E:"+File.separator+"dataAnalysis"+File.separator+"test.mdb";   
		  String   user="";   
		  String   password="";  
		  try{ 
		  Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");   
		  Connection   c=DriverManager.getConnection(dbUr1,user,password);   
		  Statement s=c.createStatement();   
		  ResultSet   r=s.executeQuery(sql);   
		 if(r.next()){   
			 status=1;
		  }   
		  else{
			  s.executeUpdate(insertSql);
		  }
		    s.close();  
		  }catch(Exception e){
		  e.printStackTrace();
		  }
		 
  out.print(status); 
%>

可见创建了变量status,当存在时,status赋值为1,否则赋值为0,最后返回status。

2,客户端代码


客户端代码主要用来校验数据格式和异步传输数据。打开记事本,输入下列代码:

<%@ page language="java" import="java.util.*,com.njue.DBManager.*" pageEncoding="GBK"%>
<html>
<head>
<title>Simple AjaxExample </title>
<script type="text/javascript">
var xmlHttp;
   var name;
   var password;
   var password1;
function createXMLHttpRequest(){
   if(window.ActiveXObject) {
     xmlHttp= new ActiveXObject("Microsoft.XMLHTTP");//创建XMLHttpRequet对象
   }
  else if (window.XMLHttpRequest) {
     xmlHttp=new XMLHttpRequest();//创建XMLHttpRequet对象
     }
 }
function startRequest() {
 createXMLHttpRequest();
   
 xmlHttp.onreadystatechange=handleStateChange;
 xmlHttp.open("POST", "Ran.jsp", true);
 var str="name="+name;
  xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
 xmlHttp.send(str);
 }
function handleStateChange() {
  if(xmlHttp.readyState==4) {
 if(xmlHttp.status==200) {
  if( xmlHttp.responseText==1)
  document.getElementById("nameInfo").innerHTML="<font color='red'>该昵称已存在</font>";
  else
  alert("恭喜你,注册成功!");
     }
  }
}
function check(){
if(name==""){
document.getElementById("nameInfo").innerHTML="<font color='red'>昵称不能为空!</font>";
return false;
}
else if(password==""){
document.getElementById("passwordInfo").innerHTML="<font color='red'>密码不能为空!</font>";
return false;
}
else if(password1==""){
document.getElementById("password1Info").innerHTML="<font color='red'>密码不能为空!</font>";
return false;
}
else if(password!=password1){
document.getElementById("password1Info").innerHTML="<font color='red'>两次输入的密码不一致!</font>";
return false;
}
else {
clear();
return true;
}
}
function exec(){
clear();
name=document.getElementById("userName").value;
password=document.getElementById("passWord").value;
password1=document.getElementById("passWord1").value;
if(check()==true){
startRequest();
}
}
function clear(){
document.getElementById("nameInfo").innerHTML="";
document.getElementById("passwordInfo").innerHTML="";
document.getElementById("password1Info").innerHTML="";
}
</script>
</head>
<body>
  <form action="#">
  <div align="center">
  <table border="1" >
<tr><td align="center" valign="center"> 昵称: <input id="userName"/><div id="nameInfo"></div><br/></td></tr>
 <tr><td>请输入密码: <input type="password" id="passWord"/><div id="passwordInfo"></div><br/></td></tr>
 <tr><td> 请再次输入密码: <input type="password" id="passWord1"/><div id="password1Info"></div><br/><tr/><td/>
 <tr><td><input type="button" value="注册"  onclick="exec(); "/></td></tr>
  </table>
  </div>
</form>
</body>
</html>


 

更多详细信息请查看java教程网 http://www.itchm.com/forum-59-1.html
分享到:
评论

相关推荐

    js常用的表单验证(自己收集的哦。很多的代码)

    JavaScript是Web开发中不可或缺的一部分,特别是在处理用户交互和表单验证时。表单验证是确保用户输入的数据符合预期...通过不断学习和实践,你可以掌握更高级的验证技巧,为用户提供更加安全、流畅的表单填写体验。

    javaScript表单验证大全

    JavaScript是Web开发中不可或缺的一部分,尤其在用户交互和数据验证方面。"JavaScript表单验证大全"这个主题涵盖了许多关于如何使用JavaScript有效地验证用户输入的重要概念。表单验证是确保用户提交的数据符合预设...

    ajax技术工具

    - 表单验证:用户输入数据时即时验证,无需等待提交后再反馈错误。 - 动态加载:如无限滚动,用户滚动到页面底部时,自动加载更多内容。 - 实时更新:例如股票价格、天气预报等实时信息的更新。 - 数据交互:如...

    复杂表单的验证提交解决方案

    下面将详细讲解这个主题,包括表单验证的重要性、常用的验证方法、JavaScript验证技巧以及一些高级策略。 1. **表单验证的重要性** 表单验证是防止无效数据进入服务器或数据库的第一道防线。它可以提高用户体验,...

    AJAX实例应用,有20多个实例

    - **表单验证**:在提交前验证用户输入,无需跳转即可反馈错误信息。 - **分页加载**:动态加载更多内容,减少页面加载时间。 - **实时数据更新**:如股票报价、天气预报等实时信息,无需刷新页面即可更新。 - *...

    Validation表单验证

    "Validation表单验证"这个主题聚焦于如何在前端和后端进行有效的数据验证。以下是一些关于表单验证的核心知识点: 1. **前端验证**: - **JavaScript/jQuery**:JavaScript是最常用的客户端验证语言,jQuery是一个...

    韩顺平Ajax课件

    - **XML与JSON**:早期Ajax常用XML传输数据,现在更倾向于使用轻量级的JSON格式,因为JSON解析更快,更易于使用。 2. **工作流程**: - **创建XMLHttpRequest对象**:这是Ajax的基础,浏览器提供了这个内置对象...

    Ajax经典实例学习

    - **表单验证**:利用Ajax实时验证用户输入,例如邮箱格式检查,避免无效的提交。 - **无刷新搜索**:用户输入搜索关键字后,页面自动显示搜索结果,无需点击搜索按钮。 - **动态加载内容**:如滚动到底部自动...

    ajax基础教程和ajax从入门到精通

    - 表单验证:在提交前验证用户输入,减少服务器负担。 - 分页加载:网页内容分块加载,提高用户体验。 - 动态搜索:在用户输入时实时更新搜索结果。 6. **最佳实践** - 使用最新的fetch API,代替...

    jQuery+ajax实现动态添加表格tr td功能示例

    - **jQuery form操作技巧汇总**:了解如何使用jQuery处理表单提交、验证等操作。 - **jQuery常用插件及用法总结**:扩展jQuery的功能,利用各种插件来完成更多复杂的任务。 - **jQuery扩展技巧总结**:探索更多...

    Ajax经典实例大全

    JSON由于其轻量级和易读性,已经成为Ajax最常用的数据格式。例如,将数据发送到服务器时,可以使用`JSON.stringify()`转换JavaScript对象为JSON字符串;接收数据时,使用`JSON.parse()`解析JSON字符串为JavaScript...

    AJAX and PHP Building Modern Web Applications – Second Edition

    - 表单验证与数据提交:通过客户端验证减少服务器负担,同时确保数据的有效性。 5. **最佳实践与调试技巧** - 错误处理与调试:介绍在AJAX和PHP开发过程中可能出现的问题及其解决方案。 - 性能优化:探讨如何...

    表单设计器,需要有一定的JS开发基础

    4. **提交处理**:在用户提交表单时,JS可以拦截提交事件,进行额外的数据处理或验证,然后使用AJAX发送数据到服务器,实现无刷新提交。 压缩包中的"jsform"很可能包含一个或多个示例代码、库文件或教程,用于帮助...

    PHP 和 AJAX

    PHP与AJAX结合使用,可以实现无刷新的数据交互,比如动态加载内容、表单验证、实时聊天等功能。以下是一些关键知识点: 1. **AJAX基础**:创建AJAX请求通常使用JavaScript的`XMLHttpRequest`对象或者现代浏览器提供...

    疯狂Ajax源码

    - 表单验证:在提交前本地验证,避免不必要的服务器请求。 - 数据分页:动态加载更多内容,无需刷新整个页面。 - 实时通讯:聊天室、股票实时更新等。 - 地图应用:拖动地图时,只更新可视区域内的数据。 - 搜索建议...

    jquery ajax 实现登录.rar

    在网页开发中,jQuery AJAX 是一种非常常用的技术,它允许我们在不刷新整个页面的情况下与服务器进行数据交互。在这个“jquery ajax 实现登录”的示例中,我们将深入理解如何利用 jQuery 的 AJAX 功能来构建一个用户...

    ASP.NET程序开发范例宝典(光盘)----目录

    #### 五、数据验证 **5.1 邮箱验证** - **知识点:** - 如何验证用户的邮箱地址是否符合标准格式。 - 使用示例: - **实例092 邮箱地址验证**:介绍了如何验证用户输入的邮箱地址格式是否正确。 **5.2 时间...

    Struts+ajax

    Struts和Ajax是两种在Web开发中常用的框架和技术,它们结合使用可以构建出高效、动态且用户友好的应用程序。在本篇文章中,我们将深入探讨Struts与Ajax的整合及其在增删查改(CRUD)操作中的应用。 首先,让我们...

Global site tag (gtag.js) - Google Analytics