login.jsp实现表单填写页面,结果提交到check.jsp,ajax后台判断check.jsp返回值。
代码如下:
login.jsp
<html> <head> <Meta http-equiv="content-type" content="text/html;charset=utf-8"> <title>login!</title> <script type="text/javascript"> var xmlHttp=false; function createXMLHttpRequest(){ if(window.ActiveXObject){ try{ xmlHttp=new ActiveXObject("Msxml2.XMLHTTP"); } catch(e){ try{ xmlHttp=new ActiveXObject("Microsoft.XMLHTTP"); } catch(ee){ xmlHttp=false; } } } else if(window.XMLHttpRequest){ try{ xmlHttp=new XMLHttpRequest(); } catch(e){ xmlHttp=false; } } } function check(){ createXMLHttpRequest(); xmlHttp.onreadystatechange=callback; nameStr=myform.name.value; passStr=myform.pass.value; var url="check.jsp?name="+nameStr+"&pass="+passStr; xmlHttp.open("post",url); xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded;charset=utf-8"); xmlHttp.send(null); function callback(){ if(xmlHttp.readyState==4){ if(xmlHttp.status==200){ var str=xmlHttp.responseText; if(str=="ok"){ document.getElementById("state").innerHTML="已登录的用户"; var tdName=document.getElementById("tdName"); tdName.replaceChild(document.createTextNode(nameStr),tdName.firstChild); var tdPass=document.getElementById("tdPass"); tdPass.replaceChild(document.createTextNode(passStr),tdName.firstChild); var trButton=document.getElementById("button"); trButton.innerHTML="<font color=\"red\">恭喜登录成功!</font>"; }else{ document.getElementById("state").innerHTML="<font color=\"red\">用户名或者密码错误!</font>"; } } } } } </script> </head> <body><br> <div align="center" id="display"> <form id="form1" name="myform"> <strong><p id="state">未登录用户</p></strong> <table width="300" border="1" id="table"> <tr> <td>用户名:</td> <td id="tdName"><input type="text" id="userName" name="name"/></td> </tr> <tr> <td>密码:</td> <td id="tdPass"><input type="password" id="userPass" name="pass"/></td> </tr> <tr> <td colspan="2"> <div align="center" id="buttom"> <input type="button" onclick="check()" value="login"/> <input type="reset" name="Submit2" value="reset" /> </div> </td> </tr> </table> <p></p> </form> </div> </body> </html>
下面是check.jsp页面,简单起见,不做判断了,直接返回结果:
<% out.write("ok"); %>
浏览器访问login.jsp,然后随意输入用户名,点击login按钮后在表单上方显示返回结果。
Ps:关于xmlhttp.responseText返回值的问题,开始的时候没注意,貌似返回的是整个页面的html源代码,导致我在回调函数里总是判断不成功,后来查看了jsp转成servlet的代码,才发现多输出了两行控制字符,这两行多余字符就是来自jsp页面使用的标签,servlet不输出标签内容,转而输出out.write("\r\n"),所以返回的不仅仅“ok”了。所以ajax里判断时需要做些处理,但是如果提交到一个servlet,那么out.pirnt()什么,就得到什么,这是不同之处。
原文链接:https://www.f2er.com/ajax/166245.html