1、这是登录页面login.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<br> var XMLHttpReq = false;<br> function creatXMLHttpRequest(){<br> if (window.ActiveXObject) {<br> xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");<br> } else {<br> if (window.XMLHttpRequest) {<br> xmlhttp = new XMLHttpRequest();<br> }<br> }<br> }<br> //发送请求的函数<br> function sendRequest(url){<br> alert(url);<br> creatXMLHttpRequest();<br> XMLHttpReq.open("GET",url,true);<br> XMLHttpReq.onreadystatechange = processResponse();//指定响应函数<br> alert("66");<br> XMLHttpReq.send(null);//发送请求<br> }<br> //处理返回信息函数<br> function processResponse(){<br> alert("3333");<br> if(XMLHttpReq.readyState==4)//判断对象状态<br> {<br> alert("444");<br> if(XMLHttpReq.status==200){//信息已经成功返回,开始处理信息<br> alert("55555");<br> var res = XMLHttpReq.responseXML.getElementsByTagName("res")[0].firstChild.data;<br> window.alert(res);<br> }else{<br> window.alert("你所请求的页面有问题");<br> }<br> }<br> }</p> <pre><code> function checkUser(){ var Uname = document.myform.myname.value; alert(Uname); var psw = document.myform.mypsw.value; alert(psw); if(Uname==null){ window.alert("名字不能为空"); document.myform.myname.focus(); return false; }else{ var url = "LoginAction?myname="+Uname+"&mypsw="+psw;//应该是这里,为什么没起作用 sendRequest(url); System.out.println("2222222222222"); } } </script> </head> <body> <form action="" method="post" name = "myform"> name:&nbsp&nbsp&nbsp&nbsp<input type="text" name="myname" size="12"><p> password:<input type="password" name="mypsw" size="12"><p> <input type="button" value="确定" onclick="checkUser()"> </form> </body> </code></pre> <p></html></p> <p>2、这是Servlet页面</p> <p>package com.servlet;</p> <p>import java.io.IOException;<br> import java.io.PrintWriter;</p> <p>import javax.servlet.ServletException;<br> import javax.servlet.http.HttpServlet;<br> import javax.servlet.http.HttpServletRequest;<br> import javax.servlet.http.HttpServletResponse;</p> <p>public class LoginAction extends HttpServlet {</p> <pre><code>public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { System.out.println("进入servlet"); request.setCharacterEncoding("UTF-8"); String uname = request.getParameter("myname"); String psw = request.getParameter("mypsw"); response.setContentType("text/xml;charset=UTF-8"); response.setHeader("Cache-Control", "no-cache"); PrintWriter out = response.getWriter(); out.println("<response>"); if(uname.equals("amin")&&psw.equals("a")){ out.println("<res>"+"热烈欢迎AMIN"+"</res>"); }else{ out.println("<res>"+"对不起你登录失败"+"</res>"); } out.println("</response>"); out.close(); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request,response); } public void init() throws ServletException { // Put your code here } </code></pre> <p>}<br> 3、这是Web.xml页面</p> <p><?xml version="1.0" encoding="UTF-8"?><br> <web-app version="2.4" <br> xmlns="http://java.sun.com/xml/ns/j2ee" <br> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" <br> xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee <br> http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"><br> <servlet><br> <description>This is the description of my J2EE component</description><br> <display-name>This is the display name of my J2EE component</display-name><br> <servlet-name>LoginAction</servlet-name><br> <servlet-class>com.servlet.LoginAction</servlet-class><br> </servlet></p> <p><servlet-mapping><br> <servlet-name>LoginAction</servlet-name><br> <url-pattern>/LoginAction</url-pattern><br> </servlet-mapping><br> <welcome-file-list><br> <welcome-file>login.jsp</welcome-file><br> </welcome-file-list><br> </web-app></p> <p>可以说说为什么调用不了?</p>
LZ。。。你这段代码有3个地方的错误。。。
1、var XMLHttpReq = false; 改为var XMLHttpReq;
2、function creatXMLHttpRequest(){
if (window.ActiveXObject) {
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
} else {
if (window.XMLHttpRequest) {
xmlhttp = new XMLHttpRequest();
}
}
}
这里的变量xmlhttp你下面就根本没用到,没匹配好,因为你前面声明的是XMLHttpReq
所以这里修改为:
function creatXMLHttpRequest(){
if (window.ActiveXObject) {
XMLHttpReq = new ActiveXObject("Microsoft.XMLHTTP");
}
else {
if (window.XMLHttpRequest) {
XMLHttpReq = new XMLHttpRequest();
}
}
}
3、指定回调函数的时候XMLHttpReq.onreadystatechange = processResponse();这里应该修改为XMLHttpReq.onreadystatechange = processResponse;-->不知道你看出问题没有,processResponse是不需要括号的哦。。。
4、var url = "LoginAction?myname="+Uname+"&mypsw="+psw;//应该是这里,为什么没起作用
sendRequest(url);
System.out.println("2222222222222");
这段代码可以肯定URL是没错的,但是Ajax代码中不需要有Java的输出语句吧。。。所以这句最好还是去掉吧。。。
呵呵。。。就是上面几个错误的原因,我已经修改测试痛你过了,你自己看下吧。。。
web.xml文件和Servlet文件是没错的。
下面是我帮你修改后的JSP文件:
[code="java"]
<%@ page language="java" pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<br> var XMLHttpReq;<br> function creatXMLHttpRequest(){<br> if (window.ActiveXObject) {<br> XMLHttpReq = new ActiveXObject("Microsoft.XMLHTTP");<br> } <br> else {<br> if (window.XMLHttpRequest) {<br> XMLHttpReq = new XMLHttpRequest();<br> }<br> }<br> }<br> //发送请求的函数<br> function sendRequest(url){<br> //alert(url);<br> creatXMLHttpRequest();<br> //alert(XMLHttpReq);<br> XMLHttpReq.open("get",url,true);<br> XMLHttpReq.onreadystatechange = processResponse;//指定响应函数<br> //alert("66");<br> XMLHttpReq.send(null);//发送请求<br> }<br> //处理返回信息函数<br> function processResponse(){<br> //alert("3333");<br> //alert(XMLHttpReq.readyState);<br> if(XMLHttpReq.readyState==4)//判断对象状态<br> {<br> alert("444");<br> if(XMLHttpReq.status==200){//信息已经成功返回,开始处理信息<br> alert("55555");<br> var res = XMLHttpReq.responseXML.getElementsByTagName("res")[0].firstChild.data;<br> window.alert(res);<br> }else{<br> window.alert("你所请求的页面有问题");<br> }<br> }<br> }</p> <pre><code>function checkUser(){ var Uname = document.myform.myname.value; alert(Uname); var psw = document.myform.mypsw.value; alert(psw); if(Uname==null){ window.alert("名字不能为空"); document.myform.myname.focus(); return false; } else{ var url = "LoginAction?myname="+Uname+"&mypsw="+psw;//应该是这里,为什么没起作用 sendRequest(url); } </code></pre> <p>}<br>
name:    
password:
[/code]
可以调用servlet的,本人用过。
请LZ检查
var url = "LoginAction?myname="+Uname+"&mypsw="+psw;//应该是这里,为什么没起作用
这里边可能会有问题 是不是应该Encode 一下
个人观点.