大家好我是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文件没问题。
答案 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>