html:
<input type="text" name="account" value="" size="20" onblur="doCheckAccount()"/><span id="accountMessage"></span>
------------------------------------------------------------------------------------------------
javascript:
function doCheckAccount(){
var name=document.getElementById("account").value;
if (!isRegisterUserName(name)){
document.getElementById("accountMessage").innerHTML="用户名不合法!";
}
else{
document.getElementById("accountMessage").innerHTML="正在处理...";
send_request('../Login?method=2&username='+name,backInfo);
}
}
------------------------------------------------------------------------------------------------
function send_request(url,callback) {//初始化、指定处理函数、发送请求的函数
http_request = false;
//开始初始化XMLHttpRequest对象
if(window.XMLHttpRequest) { //Mozilla 浏览器
http_request = new XMLHttpRequest();
if (http_request.overrideMimeType) {//设置MiME类别
http_request.overrideMimeType("text/xml");
}
}
else if (window.ActiveXObject) { // IE浏览器
try {
http_request = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
http_request = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {}
}
}
if (!http_request) { // 异常,创建对象实例失败
window.alert("不能创建XMLHttpRequest对象实例.");
return false;
}
// 确定发送请求的方式和URL以及是否异步执行下段代码
http_request.open('get', url, true);
http_request.onreadystatechange=callback;
http_request.send(null);
}------------------------------------------------------------------------------------------------
function backInfo(){
if (http_request.readyState == 4) { // 判断对象状态
if (http_request.status == 200) { // 信息已经成功返回,开始处理信息
document.getElementById("accountMessage").innerHTML = http_request.responseText;
} else { //页面不正常
alert("您所请求的页面有异常!");
}
}
}------------------------------------------------------------------------------------------------
Servlet:public class LoginServ extends HttpServlet { private LoginDao ld=null;
private int method; public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException { method=Integer.parseInt(request.getParameter("method")); if(method==2){
checkAccount(request,response);
}
} public void checkAccount(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html; charset=GBK");
String account=(String)request.getParameter("username"); LoginDao ld=new LoginDao();
PrintWriter out=response.getWriter();
if (ld.getLoginForm(account)!=null){
out.print("此用户名已存在!");
}
else{
out.print("OK");
}
}
}就是当account这个文本框失去焦点的时候,自动显示出这个用户名是否注册过。通过ajax传递信息给servlet然后去数据库验证。LoginServ的url是/Login。LoginServ,LoginDao和getLoginForm方法都是没有问题的,因为我在不用ajax的情况下,直接跳转到'../Login?method=2&username='+name页面是可以显示出正确结果的,但是用了ajax之后,就卡在send_request('../Login?method=2&username='+name,backInfo);这句了。
麻烦大家给看看
<input type="text" name="account" value="" size="20" onblur="doCheckAccount()"/><span id="accountMessage"></span>
------------------------------------------------------------------------------------------------
javascript:
function doCheckAccount(){
var name=document.getElementById("account").value;
if (!isRegisterUserName(name)){
document.getElementById("accountMessage").innerHTML="用户名不合法!";
}
else{
document.getElementById("accountMessage").innerHTML="正在处理...";
send_request('../Login?method=2&username='+name,backInfo);
}
}
------------------------------------------------------------------------------------------------
function send_request(url,callback) {//初始化、指定处理函数、发送请求的函数
http_request = false;
//开始初始化XMLHttpRequest对象
if(window.XMLHttpRequest) { //Mozilla 浏览器
http_request = new XMLHttpRequest();
if (http_request.overrideMimeType) {//设置MiME类别
http_request.overrideMimeType("text/xml");
}
}
else if (window.ActiveXObject) { // IE浏览器
try {
http_request = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
http_request = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {}
}
}
if (!http_request) { // 异常,创建对象实例失败
window.alert("不能创建XMLHttpRequest对象实例.");
return false;
}
// 确定发送请求的方式和URL以及是否异步执行下段代码
http_request.open('get', url, true);
http_request.onreadystatechange=callback;
http_request.send(null);
}------------------------------------------------------------------------------------------------
function backInfo(){
if (http_request.readyState == 4) { // 判断对象状态
if (http_request.status == 200) { // 信息已经成功返回,开始处理信息
document.getElementById("accountMessage").innerHTML = http_request.responseText;
} else { //页面不正常
alert("您所请求的页面有异常!");
}
}
}------------------------------------------------------------------------------------------------
Servlet:public class LoginServ extends HttpServlet { private LoginDao ld=null;
private int method; public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException { method=Integer.parseInt(request.getParameter("method")); if(method==2){
checkAccount(request,response);
}
} public void checkAccount(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html; charset=GBK");
String account=(String)request.getParameter("username"); LoginDao ld=new LoginDao();
PrintWriter out=response.getWriter();
if (ld.getLoginForm(account)!=null){
out.print("此用户名已存在!");
}
else{
out.print("OK");
}
}
}就是当account这个文本框失去焦点的时候,自动显示出这个用户名是否注册过。通过ajax传递信息给servlet然后去数据库验证。LoginServ的url是/Login。LoginServ,LoginDao和getLoginForm方法都是没有问题的,因为我在不用ajax的情况下,直接跳转到'../Login?method=2&username='+name页面是可以显示出正确结果的,但是用了ajax之后,就卡在send_request('../Login?method=2&username='+name,backInfo);这句了。
麻烦大家给看看
{
var xmlHttp=null;
var m_OnSucceed=function(){};
if(window.ActiveXObject)
{
try
{
xmlHttp = new ActiveXObject('Msxml2.XMLHTTP');
}
catch(e)
{
try{xmlHttp = new ActiveXObject('Microsoft.XMLHTTP');}catch(e){}
}
}
else if(window.XMLHttpRequest)
{
xmlHttp = new XMLHttpRequest();
}
this.OnSucceed=function(succeed)
{
m_OnSucceed=succeed;
}
this.post=function(d)
{
if(!xmlHttp) return;
xmlHttp.open('POST',url,false);
xmlHttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded;');
xmlHttp.send(d);
return eval(xmlHttp.responseText);
}
this.post2=function(d)
{
if(!xmlHttp) return;
xmlHttp.open('POST',url,false);
xmlHttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded;');
xmlHttp.send(d);
return xmlHttp.responseText;
}
}checkname
function username_check()
{
var username = $F('username');
$('usernameValidMsg').innerHTML="<span class=check_wait> </span>";
if(username=='')
{
$('usernameValidMsg').innerHTML="<span class=check_error>请输入您的用户名。</span>";
return false;
}
if(!/^[a-z0-9]{4,20}$/.test(username))//正则验证
{
$('usernameValidMsg').innerHTML="<span class=check_error>可由小写英文字母、数字组成,长度4-20个字符。</span>";
return false;
}
var username_checker_ajax = new Ajax("servlet/Register");//AJAX开始
if(username_checker_ajax.post('username='+username))//传参返回值 true|false
{
$('usernameValidMsg').innerHTML="<span class=check_error>抱歉,该用户名已被使用,请重新输入!</span>";
return false;
}
$('usernameValidMsg').innerHTML="<span class=check_right>恭喜您,该用户名可用</span>"
return true;
}
page view<INPUT name="username" type="text" id="username" class="text_input" onblur="username_check()">
servlet examplepublic void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=gbk");
String username=request.getParameter("username");
ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml");
CustomerDAO cusdao=(CustomerDAO)context.getBean("CustomerDAO");
List cuslist=cusdao.findByUsername(username);
PrintWriter out = response.getWriter();
if(cuslist.size()>0){
out.println("1>0");//true
}else{
out.println("0>1");//false
}
out.flush();
out.close();
}
http_request.onreadystatechange=callback;
http_request.send(null);
} ------------------------------------------------------------------------------------------------
function backInfo(){
if (http_request.readyState == 4) { // 判断对象状态
if (你的回调函数是http_request.onreadystatechange=callback;
而你下面的方法是backInfo()这能行吗,根本就找不到回调的方法