dojo demo, server验证username是否已经被使用
这个demo有助于理解JS与server的协同工作。
文档结构如上图。 主要是三个文件: main.js table.html validateUserName.jsp (代码见文章末尾)
页面打开例如以下:
选中第一个输入框后,右側出现定义好的提示信息。例如以下:
输入“olduser" , 为了简化验证过程,在validateUserName.jsp 中用硬编码验证username是否为”olduser", 返回JSON字串。 假设是,则返回{valid:false}。 否则返回{valid:true}
处理流程:
用户输入“olduser" , 并把焦点移出当前输入框后, onchange 事件触发, 调用main.js中的usernameOnChange函数。 此函数发送验证请求到server, 由validateUserName.jsp处理此请求。 validateUserName.jsp推断”olduser"为已实用户名, 于是返回{valid:false}到浏览器。 浏览器收到服务器的response之后,由main.js中的usernameValidationHandler函数处理响应,它推断valid为false,
则显示定义好的error message.
valid为true的情况与为false的情况类似, 不会显示error message.
有个示解决的问题是当valid为false为false时,error message 并未显示到页面上,应该是dijit.byId("tableuserName").displayMessage(errorMessage);这一句没有生效,这个问题临时没能解决,在后面的学习中会留意看怎么样找到方法解决。
table.html
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<style type="text/css" title="text/css">
@import "dijit/themes/claro/claro.css";
@import "dojox/form/resources/CheckedMultiSelect.css";
</style>
<script type="text/javascript" src="dojo/dojo.js" djConfig="parseOnLoad: true"></script>
<script type="text/javascript" src="main.js"></script>
<script>
dojo.require("dojo/parser");
// dojo.require("dijit/form/Button");
dojo.require('dijit.form.ValidationTextBox'); //dojo.require("dojo/data/ItemFileReadStore"); </script>
</head>
<body id="content" class="claro">
<div id="mortgages" class=" "> <div class="" id="dijit/form/Form">
<h2 class=""></h2>
<p style="width:700px;">
please enter you name and address
</p> <div class="">
<div class="">
<label for="userName">User Name</label>
<input type="text" name="userName" value=""
onchange="usernameOnChange"
data-dojo-props="" id="tableuserName"
dojoType="dijit.form.ValidationTextBox"
promptMessage="oops"
invalidMessage="invalid"
missingMessage="Ooops! You forgot your first name!" /> </div>
<div class="">
<label for="Address">Address</label>
<input type="text" name="Address" value=""
data-dojo-type="dijit/form/ValidationTextBox"
onchange=""
data-dojo-props="trim:true, propercase:true" id="tableAddress" /> </div> </div>
</div> </div> <div id="result"></div> </body>
</html>
main.js
function usernameOnChange() {
console.log("run");
var userName = dijit.byId("tableuserName").getValue();
if(userName == ""){
console.log("user name is empty");
return;
}
dojo.xhrGet({
url:"validateUserName.jsp?userName=" + userName,
handleAs:"json",
handle:usernameValidationHandler
});
}
function usernameValidationHandler(response){
//console.log("get response");
dijit.byId("tableuserName").displayMessage("yes");
if(!response.valid){
var errorMessage = "user name already exists";
//console.log(errorMessage);
dijit.byId("tableuserName").displayMessage(errorMessage);
}
}
validateUserName.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
try{
System.out.println("UserName :"+
request.getParameter("userName"));
if(request.getParameter("userName").equals("olduser")){
out.println("{valid:false}");
System.out.println("To Brower : false"); }else{
out.println("{valid: true}");
System.out.println("To Brower : true");
}
}catch(Exception ex){
out.println(ex.getMessage());
ex.printStackTrace();
}
%>
dojo demo, server验证username是否已经被使用的更多相关文章
- IOS内购支付server验证模式
IOS 内购支付两种模式: 内置模式 server模式 内置模式的流程: app从app store 获取产品信息 用户选择须要购买的产品 app发送支付请求到app store app store ...
- 【java项目实践】具体解释Ajax工作原理以及实现异步验证username是否存在+源代码下载(java版)
一年前,从不知道Ajax是什么,伴随着不断的积累,到如今常常使用,逐渐有了深入的认识. 今天,假设想开发一个更加人性化,友好,无刷新,交互性更强的网页,那您的目标一定是Ajax. 介绍 在具体讨论Aj ...
- 用SQL Server验证用户名和密码
用SQL Server验证用户名和密码,从页面输入的用户名和密码与数据库的用户名和密码进行匹配,正确则登入,错误则提醒. <form action="index.jsp" m ...
- SQL Server 验证身份证合法性函数(使用VBScript.RegExp)
原文:SQL Server 验证身份证合法性函数(使用VBScript.RegExp) 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/wzy0623 ...
- Struts2+Spring+Hibernate step by step 03 整合Spring之中的一个(在DAO层验证username和password)
注:该系列文章部分内容来自王健老师编写SSH整合开发教程 目的:通过Spring创建数据库的连接,并通过Spring进行事务管理. 第一步:将Spring的包拷贝至当前项目的lib文件夹下,例如以下图 ...
- Android实战简易教程-第二十三枪(基于Baas的用户注冊验证username是否反复功能!)
接上一篇,加入验证用户名是否已经注冊功能! 仅仅须要改动MainActivity.java: package com.example.logintest; import java.util.List; ...
- SQL server 安装成功到使用Sa SQL server验证登录等一系列问题
使用 Windows 身份验证方式登录 出现错误 无法连接到 本地服务器 解决问题: SQL server配置管理器:服务远程过程调用失败 https://blog.csdn.net/gfjjggg/ ...
- SQL Server验证的两种方式
1.Windows身份验证:本机连接或者受信的局域网连接(一般在忘记管理员密码或者做系统配置的情况下使用). 2.SQLServer验证:使用用户名.密码验证(推荐使用). 启用方法:以Windows ...
- django自带的用户验证是验证username和password,如何自定义验证功能,让mobil也能作为账户名登录?
users.views.pyfrom django.contrib.auth.backends import ModelBackendfrom django.db.models import Qcla ...
随机推荐
- 回溯算法-C#语言解决八皇后问题的写法与优化
结合问题说方案,首先先说问题: 八皇后问题:在8X8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行.同一列或同一斜线上,问有多少种摆法. 嗯,这个问题已经被使用各种语言解 ...
- IOS百度地图语音导航
VoiceNavigationViewController.m * 客户端需安装百度导航地图 #import "VoiceNavigationViewController.h" # ...
- IOS开发之---触摸和手势
Touch:在与设备的多点触摸屏交互时生成. 响应者对象 响应者对象就是可以响应事件并对事件作出处理.在iOS中,存在UIResponder类,它定义了响应者对象的所有方法.UIApplication ...
- Train Problem I(栈)
Train Problem I Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)T ...
- 3第一周课后练习·阅读计划(3)-使用函数来访问私有数据成员
/* * Copyright (c) 2015, 计算机科学学院,烟台大学 * All rights reserved. * 文件名:test.cpp * 作 靠:刘畅 * 完成日期:2015年 3 ...
- C#中对输出格式的初始化
一.在输出的时候,\t和8个空格是不一样的,\t是跳转到下一个水平制表符,如果你在第一个水平制表符中写有数据123,那么跳转后跳转到9的位置上,中间只有5个空格,但是如果用8个空格来做分割的话,就会有 ...
- oracle 通过透明网关gateway 连接sqlserver
真实配置如下: 1.安装gateway 在一台单独的机器上,ip:172.30.40.29 2.配置listener.ora如下: 路径: D:\product\11.2.0\tg_1\NETWOR ...
- SQL语句函数详解__sql聚合函数
函数是一种有零个或多个参数并且有一个返回值的程序.在SQL中Oracle内建了一系列函数,这些函数都可被称为SQL或PL/SQL语句,函数主要分为两大类:单行函数.组函数 本文将讨论如何使用单行函数及 ...
- 宏定义 define
#define kOut -1 用一个字符串代替一个数据 用kOut表示-1(一般开头有一个小写的k) 作用: 1.为了让一些数据有意义 #define kUseId asdjlfdjafa #def ...
- javascript EcmaScript5 新增对象之Object.freeze
我们都知道在js里对象是很容易改变的 var obj1 ={ a:'111' } obj1.a = '222'; console.log( obj.a ) //output 222 对象的属性发生了变 ...