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

标签 java ajax servlets

大家好,我是 ajax 新手,尝试使用 javascript(不知道 jQuery)在 servlet 和 html 页面之间创建一个简单的基本数据传输。但这不起作用尝试阅读教程,但仍然无法找出问题所在。谁能告诉我哪里做错了。

HTML页面 索引.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:测试.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");
    }
}

我使用的Web服务器是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>

编辑:

我面临的问题是 - 当我点击“点击按钮”时,段落元素的innerHTML应该改变,但它没有改变。我尝试从地址栏运行 servlet 来检查 servlet 错误,它正在工作,它打印“动态”,因此 servlet 和 Web.xml 文件没有问题。

最佳答案

在“onreadystatechange”函数之后写入“xmlhttp.send(null)”。希望它能起作用。 此外,您不需要在发送中传递“null”。

以下代码非常适合我的文件。我所做的另一个更改是添加“.” open() 中 URL 中“/”之前的句点。我在声明 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>

关于java - 使用 javascript 进行 Ajax 和 java servlet 数据传输,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28008288/

相关文章:

servlets - servlet 的通配符路径?

java - "javax.servlet.* "和 "HttpServlet"无法解析为类型

java - 不知道在 Spring Tool Suite 中创建哪个项目

java - 如何在 Web 应用程序中最好地实现用户可选变量

java - 单击复选框后面板重新加载

javascript - 如何将数据显示成线性highChart?

java - 如何在eclipse中配置 jetty ?

java - 线程池中线程的运行时异常完全消失: how to handle

php - Ajax 调用不适用于 iPhone 应用程序和 arduino

java - SetCharacterEncodingFilter 仅适用于 GET 请求