我在验证“验证码”的时候,我不想把交给action去处理,而是想在验证码的显示页面中就进行验证,就出现了jsp把产生的随机数传给JavaScript使用的问题。在验证码生成的jsp文件中,session.setAttribute("rand",sRand);那么我在JavaScript中怎么才能取到这个值,或者不用session,还有其他办法吗?
解决方案 »
- 这是什么异常,怎么解决?怀疑是dwr和spring整合问题
- 新手请教list取值问题
- 求助关于struts中如何处理html:select和html:option
- 一个银行全部卡号,和一个用前后6位中间用*表示判断是否相等的问题??????????
- 如何解除上传文件大小的限制TOMCAT6.0
- oracle更改方言hibernate执行问题
- 请教关于在同一页面上显示及更新数据库的问题!!(急)
- 请帮忙,关于Servlet,非常简单,可我就蒙了.
- 本菜鸟想请教各位大虾,请各位多多帮忙!怎样才能运行servlet呢?
- Server2003下OpenOffice+SWFTools无法转换pdf和swf文件
- 向大哥求助:采用了i18n标签库,怎么老是提示tag library imported没定义呢?
- 点击联接进入下个页面出错的问题!!
<!--var strSessionValue = <%=session.getAttribute("rand")%>;//-->
</SCRIPT>
呵呵,小弟初学,也是现学现用,请再赐教!
我在javascipt写入了以下代码:
<SCRIPT LANGUAGE="JavaScript">
<!--
var rand = <%=session.getAttribute("rand")%>;
//--> if(!(rand==form.GetCode.value))
{
alert("请您输入正确的验证码!");
form.GetCode.focus();
return false;
}</SCRIPT>却不知道为什么,即使写入的是正确的验证码,它也说是错误的,不晓得是为什么?
是不是他们的字符之间还要转化?另外session.setAttribute("rand",sRand);中sRand是定义的为String类型
document.write("rand="+rand);
document.write("input="+input);
测试出的rand值和input值总是不同的啊?即使是在输入相同的情况下。
// 取随机产生的认证码(4位数字)
String sRand="";
for (int i=0;i<4;i++){
String rand=String.valueOf(random.nextInt(10));
sRand+=rand;
// 将认证码显示到图象中
g.setColor(new Color(20+random.nextInt(110),20+random.nextInt(110),20+random.nextInt(110)));//调用函数出来的颜色相同,可能是因为种子太接近,所以只能直接生成
g.drawString(rand,13*i+6,16);
}// 将认证码存入SESSION
session.setAttribute("rand",sRand);
这是生成验证码的关键部分!
为什么在JavaScript中取到的rand值不正确呢?
不过你可以用一个隐藏的iframe来刷新再把从request or session中取得的值传给JS验证...
<!--
var rand = "<%=session.getAttribute("rand")%>"; //jsp是原样显示,它是不知道你的javascript想要什么类型的,如果不用引号括起来,就成了整型了,或者什么都不是(非数字的时),而表单的值是字符串类型
//--> if(rand != form.GetCode.value))
{
alert("请您输入正确的验证码!");
form.GetCode.focus();
return false;
}</SCRIPT>
谢谢你们的帮助。
indeed(indeed) :您的语句中的确是少一个"", ^_^
marenjie(sonija) :您的方法我也试过了,效果和==是一样的;
raul07(Raul07)和yoyodd(蓝梦丁丁):您们说得方法是正确的取值方法;呵呵,对于“把jsp的参数传给JavaScript”这个问题而言,上面的方法是正确。
这样,如果我们真要在当前页面用javascript取jsp中session的属性值,那么得到总是你上一次生成的验证码,而不是当前页面生成的验证码.后来我又从其他地方看了看源代码,他们的处理方法是,在当前页面生成验证码之后,然后转向另外一个jsp文件进行处理,这样就可以完成正常的验证过程.另外,dachan333(大蝉)说的也有理,可能会对网页的安全性造成一定的影响.