使用javascript进行Ajax和java servlet数据传输

时间:2015-01-18 08:15:18

标签: java ajax servlets

大家好我是ajax的新手,尝试使用javascript(不了解jQuery)在servlet和html页面之间创建一个简单的基本数据传输。但是那些没有尝试阅读教程,但仍然无法弄清楚问题。有人能告诉我我做错了吗。

Html页面 的index.html

<body>
    <button onClick="run()">Click</button>
    <script>
        function run() {
            if(window.XMLHttpResquest) xmlhttp=new XMLHttpResquest();
            else  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
            xmlhttp.open("GET","/test",false);
            xmlhttp.send(null);
            xmlhttp.onreadystatechange=function() {
                if (xmlhttp.readyState==4 && xmlhttp.status==200) {
                    document.getElementById("demo").innerHTML=xmlhttp.responseText;
                }
            }
        }
    </script>
    <br>
    <p id="demo">Static</p>
</body>

Servlet:Test.java

package foo;

import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;

public class Test extends HttpServlet {
    public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException,IOException {
        res.setContentType("text/plain");
        res.getWriter().write("Dynamic");
    }
}

我使用的WebServer是tomcat,web.xml

<web-app>
    <servlet>
        <servlet-name>tst</servlet-name>
        <servlet-class>foo.Test</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>tst</servlet-name>
        <url-pattern>/test</url-pattern>
    </servlet-mapping>
</web-app>

编辑:

我面临的问题是 - 当我点击“点击”按钮&#39;段落元素的innerHTML应该改变,但它不会改变。我尝试从地址栏运行servlet来检查servlet错误,它正在打印&#34; Dynamic&#34;所以servlet和Web.xml文件没问题。

1 个答案:

答案 0 :(得分:2)

写&#39; xmlhttp.send(null)&#39;之后&#39; onreadystatechange&#39;功能。希望它应该工作。 而且,你不需要通过&#39; null&#39;发送。

以下代码适用于我完美的文件。我做的另一个改变是添加&#39;。&#39;在&#39; /&#39;之前的网址中的句点在open()中。我在声明onreadystatechange的函数后调用了send()。

<body>
    <button onClick="run()">Click</button>
     <script>
        function run() {
            if(window.XMLHttpResquest) xmlhttp=new XMLHttpResquest();
            else  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
            xmlhttp.open("GET","./test",false);
            xmlhttp.onreadystatechange=function() {
                if (xmlhttp.readyState==4 && xmlhttp.status==200) {
                    document.getElementById("demo").innerHTML=xmlhttp.responseText;
                }
            }
            xmlhttp.send();
        }
    </script>
    <br>
    <p id="demo">Static</p>
</body>