首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

一个简单的ajax表单有关问题

2012-03-19 
一个简单的ajax表单问题我写了一个ajax程序,奇怪的是用于用户注册时,程序运行正确;但在用户登录时,却出现

一个简单的ajax表单问题
我写了一个ajax程序,奇怪的是   用于用户注册时,程序运行正确;但在用户登录时,却出现问题。登录时填写的表单内容不能够提交到   struts   的   aciton     ,总是传一个空值。   希望朋友们能够给与解决方法。

代码如下:
<%@   page   language= "java "   pageEncoding= "gb2312 "%>
<%@   taglib   uri= "http://jakarta.apache.org/struts/tags-bean "   prefix= "bean "%>  
<%@   taglib   uri= "http://jakarta.apache.org/struts/tags-html "   prefix= "html "%>
<html>  
<head>
<title> 用户登录 </title>

<script   src= "js/net.js "> </script>  
</head>
<body>
<script   type= "text/javascript ">  

var   times=0;

var   form   =   document.loginForm;

function   subform(){  

var   gtext=this.req.responseText;  

var   info=document.getElementById( "info ");  

if(gtext.indexOf( "validate_successful ")!=-1){  

document.forms[ "form "].submit();


//当得到的值表示合法,则验证码通过。  

}else{  

times++;  

if(times> =3){//如果连接3次输入错误,则重载图片,可以防止作弊和用户看不清图片;  

info.innerHTML= "接连3次输入错误。更新验证码,请重新输入 ";  

document.forms[ "form "].num.value= " ";  

show(document.getElementById( 'random '));  

times=0;  

}else{  

info.innerHTML= "第 "+times+ "次验证码错误,请注意区分大小写   ";  

}  

document.forms[ "form "].num.select();  

}  

}  

function   validata(obj){  

var   enter=true;  

var   info=document.getElementById( "info ");  

var   msg= " ";  

if(obj.email.value.match(/^\s*$/g)){//如果未输入邮箱,提示  

msg+= "请输入您的邮箱 <br> ";enter=false  

}
if   (obj.email.value.length!=   0)
{
for   (i=0;   i <obj.email.value.length;   i++)
if   (obj.email.value.charAt(i)== "@ ")
break;
if   (i==obj.email.value.length)
{
msg+= "邮箱不合法 <br> ";enter=false
  }

}

if(obj.pwd.value.match(/^\s*$/g)){//如果未输入密码,提示  

msg+= "请输入您的密码 <br> ";enter=false  

}  

if(obj.num.value.match(/^\s*$/g)){//如果未输入验证码,提示  

msg+= "请输入验证码 <br> ";enter=false  

}  

if(enter==true){

return   subform();

}

if(enter==false){  

info.innerHTML=msg;  

return   false;  

}

var   url= "num.jsp?num= "+obj.num.value;  

var   newxmlhttp=new   net.ContentLoader(url,subform, " ", "get ",null,null);  

return   false;  

}  

function   show(o){  

//重载验证码  

var   timenow   =   new   Date().getTime();  

o.src= "random.jsp?d= "+timenow;  

}  

</script>  

<html:form   action= "/login "   method= "post "   onsubmit= "return   validata(this); ">



您的邮箱: <input   type= "text "   name= "email "   size=20>   <br>

您的密码: <input   type= "text "   name= "pwd "   size=20>   <br>

验   证   码: <input   type= "text "   name= "num "   size=10   maxlength= "4 ">  

<img   src= "random.jsp "   id= "random "   align= " "   valign= "absmiddle "   hspace= "5 ">  

<a   href= "javascript:show(document.getElementById( 'random ')) "> 验证码看不清 </a> <br>  

<html:submit   value= "确认 "/> &nbsp;&nbsp; <a   href= "register.jsp "> 还未注册?点击注册 </a> <br>  

<div   id=info   style= "color:red;padding:10px;font-size:12px; "> </div>
</html:form>
</body>
</html>



[解决办法]
1. var form = document.loginForm; 能够得到form么? 用alert(form)看看是不是form已经得到.
2. if(enter==true){
return subform();
}
你的subform()函数有返回值么?
3. 直接调用action,并在url中用query string加入参数测试action

不是什么大问题 自己多修改测试几遍
[解决办法]
LZ的这个例子我也用过,刚刚自己改用Struts验证成功用Action控制跳转,没问题

你点submit按钮没反映的有2个原因,一种是没有通过验证,你看看是否有提示

第二种如果没有提示,则说明验证码输入无误,应该做这步

function subform(){
var gtext=this.req.responseText;
<!--alert(gtext);-->
var info=document.getElementById( "info ");
if(gtext.indexOf( "validate_successful ")!=-1){
<!--alert( "validate_successful ");-->
//info.innerHTML= " <font color=green> 验证码通过 </font> ";
document.forms[ "myform "].submit();
//当得到的值表示合法,则验证码通过。

热点排行