`
txf2004
  • 浏览: 6872132 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Ajax 輸入驗證

阅读更多
表單資料的驗證可以分為客戶端驗證與伺服端驗證,為了安全起見,避免客戶端驗證被跳過,伺服端驗證往往是必須的。

當使用者在表單中輸入資料時,在過去往往只能靠使用者完成資料輸入,再按下「送出」按鈕,才可以進行伺服端驗證,現在可以利用非同步請求方式,在使用者某 些欄位輸入完成之後,就以非同步方式在背景發送請求給伺服端進行驗證,若有誤再以DOM更新頁面訊息,使用者可以即時發現先前錯誤的輸入。

舉個例子來說,有個網頁必須輸入帳戶號碼與姓名,帳戶號碼是XXX-XXXXXX-X的格式,X為數字:
  • InputValidateEx-1.html
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=BIG5">
<title>輸入驗證</title>
<script type="text/javascript" src="InputValidateEx-1.js"></script>
</head>
<body>
帳戶號碼: <input id="number" type="text" size="10" onchange="validate();"/>
<div id="numberMessage"></div>
姓名: <input type="text" size="10"/>
</body>
</html>

當使用者在帳戶號碼輸入完成,轉而輸入姓名時,這時會觸發onchange事件而執行validate()函式,您可以在validate()函式中發送號碼欄位,以非同步方式向伺服端要求驗證:
  • InputValidateEx-1.js
var xmlHttp;

function createXMLHttpRequest() {
if(window.XMLHttpRequest) {
xmlHttp = new XMLHttpRequest();
}
else if(window.ActiveXObject) {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
}


function validate() {
var number = document.getElementById("number").value;
var url = "ValidateServlet?number=" + escape(number);
createXMLHttpRequest();
xmlHttp.onreadystatechange = handleStateChange;
xmlHttp.open("GET", url);
xmlHttp.send(null);
}

function handleStateChange() {
if(xmlHttp.readyState == 4) {
if(xmlHttp.status == 200) {
var pass = xmlHttp.responseXML.getElementsByTagName("pass")[0].firstChild.data;
var message = xmlHttp.responseXML.getElementsByTagName("message")[0].firstChild.data;

if(pass === "false") {
color = "green";
document.getElementById("numberMessage").innerHTML =
"<font color='red'>" + message + " </font>";
}
else {
document.getElementById("numberMessage").innerHTML = "";
}
}
}
}

伺服端會傳回XML作為回應,當中包括以下訊息:
<response>
<pass>false</pass>
<message>輸入的格式有誤</message>
</response>

所以程式上設定,當格式錯誤時<pass>為false,此時以紅字在網頁上顯示錯誤訊息,如果正確則什麼都不作。

您可以搭配以下這個簡單的Servlet來進行驗證:
  • ValidateServlet.java
package onlyfun.caterpillar;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class ValidateServlet extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
boolean pass = request.getParameter("number").matches("[0-9]{3}-[0-9]{6}-[0-9]");

response.setContentType("text/xml");
response.setHeader("Cache-Control", "no-cache");
response.setCharacterEncoding("UTF8");

String message = "輸入的格式有誤";

if (pass) {
message = "OK!";
}

PrintWriter out = response.getWriter();
out.println("<response>");
out.println("<pass>" + pass + "</pass>");
out.println("<message>" + message + "</message>");
out.println("</response>");
out.close();
}
}



分享到:
评论

相关推荐

    Struts2与Ajax结合输入验证[包含功能代码段]

    Struts2与Ajax结合 输入验证

    ajax输入验证 气泡提示插件附文档.rar

    这是一款JavaScript 和ajax结合实现的输入验证 气泡提示插件,为了用户能够快速上手,压缩包内附有说明文档,本脚本是表单内提示信息框,当把焦点移到表单内的文本框时会弹出一个带指向的提示框,根据ajax交互式的...

    AJAX formValidator 输入验证

    ASp.net输入验证 AJAX formValidator 输入验证

    一个Ajax无刷新表单输入验证特效插件.rar

    一个Ajax无刷新表单输入验证特效插件,主要是可以适时弹出提示信息,点确认后,仍使用传统的弹出框弹出信息,各参数设置说明:  chk.config:待验证项目信息,对应项目说明:  id:待验证项目的id.(类型:字符串,必填)...

    一个Ajax表单检测验证实例.rar

    一个Ajax表单检测验证实例,在不刷新网页的情况下对表单中的各个输入项进行检查,并显示出错误提示,在众多ajax表单中,本示例并不是最复杂的,因此对于学习研究类似表单的实现方法很有参考价值。ajax无刷新表单验证...

    ajax注册验证表单

    ajax注册验证表单,通过用户输入的注册信息,判断是否正确。

    Ajax表单验证自动检测是否重名

    Ajax异步请求,表单验证自动检测是否重名

    AJAX异步验证

    AJAX实现异步验证 我们在做验证码的时候往往由于要反,验证有时故意加入多的干扰因素,这时验证码显示不很清楚,用户经常输入错误。这样不但要重新刷新页面,导致用户没有看清楚验证码而重填而不是修改,而且如果...

    php+ajax注册验证

    php+ajax注册验证如果你要做表单的验证,那么这个实例就是很好的效果,只要你输入以后就可以很方便的实现验证功能,供学习使用

    jquery Ajax表单输入检测验证一例

    jquery Ajax表单输入检测验证一例 jquery Ajax表单输入检测验证一例

    带注册验证的AJAX验证表单实例

    带注册验证的AJAX验证表单实例,可以对每一个表单的输入内容进行验证的,并且有提示

    Thinkphp和AJAX动态验证用户输入

    使用Thinkphp3.2框架,wampserver服务器,ajax提交数据,详情见博客http://blog.csdn.net/welovesunflower/article/details/41963671

    Ajax无刷新表单输入检测验证 基于jQuery.rar

    Form Of Notifications一款来自国外的 jquery Ajax表单输入检测验证一例,如果输入有错误当即给出提示,表单并不能提交,体升用户体验的好方法,Ajax一定要学习一下哦,jQuery是实现Ajax的快速平台,有必要掌握哦。

    DWR实现AJAX验证实例

    DWR实现AJAX验证实例,通过输入的数查询数据库字段是否存在。在前台显示。eclips实现。

    Ajax作业.zip[0QtTGc]

    利用Ajax技术实现表单输入信息的验证。以用户注册页面示例,在注册页面中需要对用户名和两次输入的密码进行验证,其中用户名是唯一的,不能重复,而两次输入的密码必须相同,只用这样的输入才是有效地。并且要求,...

    用ajax进行验证码验证

    随机验证码生成,使用ajax对输入的验证码进行验证

    Ajax与servlet免刷新验证

    关于用Ajax验证用户名的实例使用Ajax后用户输入用户名后不需要刷新页面

    ajax的日期验证.rar

    用ajax实现表单的动态验证 动态验证日期如果格式不正确红色字体提示刚开输入的是非法字符

Global site tag (gtag.js) - Google Analytics