a516784919 2009-09-22 02:10
浏览 323
已采纳

为什么AJAX调用不了Servlet控制器

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(&quot;Microsoft.XMLHTTP&quot;);<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(&quot;GET&quot;,url,true);<br> XMLHttpReq.onreadystatechange = processResponse();//指定响应函数<br> alert(&quot;66&quot;);<br> XMLHttpReq.send(null);//发送请求<br> }<br> //处理返回信息函数<br> function processResponse(){<br> alert(&quot;3333&quot;);<br> if(XMLHttpReq.readyState==4)//判断对象状态<br> {<br> alert(&quot;444&quot;);<br> if(XMLHttpReq.status==200){//信息已经成功返回,开始处理信息<br> alert(&quot;55555&quot;);<br> var res = XMLHttpReq.responseXML.getElementsByTagName(&quot;res&quot;)[0].firstChild.data;<br> window.alert(res);<br> }else{<br> window.alert(&quot;你所请求的页面有问题&quot;);<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(&quot;名字不能为空&quot;); document.myform.myname.focus(); return false; }else{ var url = &quot;LoginAction?myname=&quot;+Uname+&quot;&amp;mypsw=&quot;+psw;//应该是这里,为什么没起作用 sendRequest(url); System.out.println(&quot;2222222222222&quot;); } } &lt;/script&gt; &lt;/head&gt; &lt;body&gt; &lt;form action=&quot;&quot; method=&quot;post&quot; name = &quot;myform&quot;&gt; name:&amp;nbsp&amp;nbsp&amp;nbsp&amp;nbsp&lt;input type=&quot;text&quot; name=&quot;myname&quot; size=&quot;12&quot;&gt;&lt;p&gt; password:&lt;input type=&quot;password&quot; name=&quot;mypsw&quot; size=&quot;12&quot;&gt;&lt;p&gt; &lt;input type=&quot;button&quot; value=&quot;确定&quot; onclick=&quot;checkUser()&quot;&gt; &lt;/form&gt; &lt;/body&gt; </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(&quot;进入servlet&quot;); request.setCharacterEncoding(&quot;UTF-8&quot;); String uname = request.getParameter(&quot;myname&quot;); String psw = request.getParameter(&quot;mypsw&quot;); response.setContentType(&quot;text/xml;charset=UTF-8&quot;); response.setHeader(&quot;Cache-Control&quot;, &quot;no-cache&quot;); PrintWriter out = response.getWriter(); out.println(&quot;&lt;response&gt;&quot;); if(uname.equals(&quot;amin&quot;)&amp;&amp;psw.equals(&quot;a&quot;)){ out.println(&quot;&lt;res&gt;&quot;+&quot;热烈欢迎AMIN&quot;+&quot;&lt;/res&gt;&quot;); }else{ out.println(&quot;&lt;res&gt;&quot;+&quot;对不起你登录失败&quot;+&quot;&lt;/res&gt;&quot;); } out.println(&quot;&lt;/response&gt;&quot;); 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>&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;<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>
  • 写回答

2条回答 默认 最新

  • easinchu 2009-09-22 12:59
    关注

    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(&quot;Microsoft.XMLHTTP&quot;);<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(&quot;get&quot;,url,true);<br> XMLHttpReq.onreadystatechange = processResponse;//指定响应函数<br> //alert(&quot;66&quot;);<br> XMLHttpReq.send(null);//发送请求<br> }<br> //处理返回信息函数<br> function processResponse(){<br> //alert(&quot;3333&quot;);<br> //alert(XMLHttpReq.readyState);<br> if(XMLHttpReq.readyState==4)//判断对象状态<br> {<br> alert(&quot;444&quot;);<br> if(XMLHttpReq.status==200){//信息已经成功返回,开始处理信息<br> alert(&quot;55555&quot;);<br> var res = XMLHttpReq.responseXML.getElementsByTagName(&quot;res&quot;)[0].firstChild.data;<br> window.alert(res);<br> }else{<br> window.alert(&quot;你所请求的页面有问题&quot;);<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(&quot;名字不能为空&quot;); document.myform.myname.focus(); return false; } else{ var url = &quot;LoginAction?myname=&quot;+Uname+&quot;&amp;mypsw=&quot;+psw;//应该是这里,为什么没起作用 sendRequest(url); } </code></pre> <p>}<br>



    name:&nbsp&nbsp&nbsp&nbsp


    password:





    [/code]

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 matlab求解平差
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料
  • ¥15 使用R语言marginaleffects包进行边际效应图绘制
  • ¥20 usb设备兼容性问题
  • ¥15 错误(10048): “调用exui内部功能”库命令的参数“参数4”不能接受空数据。怎么解决啊
  • ¥15 安装svn网络有问题怎么办
  • ¥15 vue2登录调用后端接口如何实现
  • ¥85 永磁型步进电机PID算法