JSP中用ajax局部刷新问题 20

JSP首页index.jsp<script>//设一个变量varXMLHttpReq=false;//创建一个XMLHttpRequest对象functioncreate... JSP首页 index.jsp
<script> //设一个变量 var XMLHttpReq=false; //创建一个XMLHttpRequest对象 function createXMLHttpRequest(){ if(window.XMLHttpRequest){ //Mozilla XMLHttpReq=new XMLHttpRequest(); } else if(window.ActiveXObject){ try{ XMLHttpReq=new ActiveXObject("Msxml2.XMLHTTP"); }catch(e){ try{ XMLHttpReq=new ActiveXObject("Microsoft.XMLHTTP"); }catch(e){} } } } //发送请求函数 function send(url){ createXMLHttpRequest(); XMLHttpReq.open("GET",url,true); XMLHttpReq.onreadystatechange=proce; //指定响应的函数 XMLHttpReq.send(null); //发送请求 } function proce(){ if(XMLHttpReq.readyState==4){ //对象状态 if(XMLHttpReq.status==200){//信息已成功返回,开始处理信息 var res=XMLHttpReq.responseXML.getElementsByTagName("div")[0].firstChild.data; window.alert(res); document.getElementById("data").innerHTML = res; }else{ window.alert("不好意思,所请求的页面有异常"); } } } function check() { var user=document.form1.user.value; var usernm=document.form1.usernm.value; var password=document.form1.userpwd.value; if(/^\s*$/g.test(usernm)) { alert ("错误提示:用户名不能为空!"); return false; } if (/^\s*$/g.test(password)) { alert ("错误提示:密码不能为空!"); return false; } else document.getElementByName("form1").submit();//即将登陆数据提交 } </script>
<!--需要局部刷新的地方如下-->
<!--登录窗口 --> <div id=date> <form method="get" name="form1" action="Login"> //Login是一个servlet <table border="0" cellpadding="0" cellspacing="0" align="center" width="240" height="60">
<tr>
<td><input type="text" name="usernm" font-size:8pt ;" tabindex=1/></td> </tr> <tr>
<td><img src="image/pw_title.gif"></img></td>
<td><input type="password" name="userpwd" size="20" font-size:8pt" tabindex=2></input></td></tr>
</table> <input type="radio" value="student" checked name="user">学生</input>
<input type="radio" value="teacher" name="user" >教师</input>
<input type="image" src="image/login_bt.gif" value="登录" onclick="return check()"/> </form> </div>

//以下是servlet:Login.java的一部分

大致意思是如果登陆成功或失败就刷新原有的登录窗口div。但现在为什么无法局部刷新。求大神指导!解决问题的话我把我剩下的所有分都追加了!
登录的时候我可以实现用户验证,但就是无法局部刷新原先的登录窗口。而是在另一个页面显示用户登录成功或失败
展开
 我来答
herrywood
2012-11-30 · TA获得超过870个赞
知道小有建树答主
回答量:523
采纳率:66%
帮助的人:480万
展开全部
看这句:

document.getElementByName("form1").submit();
你未使用send函数,是用submit进行提交,不是Ajax提交,所以无法局部刷新。
改成:
var url = document.getElementByName("form1").action + "?user="+user+"&usernm="+usernm+"&password="+password;
send(url);
return false;
追问
else
var url = "Login?user="+user+"&usernm="+usernm+"&password="+password;
send(url);
return false;
如果我这样提交给servlet:Login。为什么接收不到参数的值。。是不是我的语法问题
追答
可能有两种原因。
1、URL不全,补全
2、Login不支持GET方法,要用POST方法。
你可以试试在浏览器地址栏上直接用上面的url访问试试可不可以收到,改到可以收到就OK了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
819371457
2012-12-01
知道答主
回答量:28
采纳率:0%
帮助的人:8.1万
展开全部
在下佩服!
建议使用第三方脚本库的Ajax;或提取其中的Ajax部分来参考或使用

补充楼上的知友
拿到url之后,在send之前,应该把把url encodeURI 一下:url=encodeURI(url);或者对每一个参数的值执行encodeURIComponent
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式