大家好,我是 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/