Ajax 和 java servlet 数据传输使用 java 脚本
Ajax and java servlet data transfer using java script
大家好,我是 ajax 的新手,正在尝试使用 javascript 在 servlet 和 html 页面之间创建一个简单的基本数据传输(不知道 jQuery ).但这不起作用尝试阅读教程但仍然无法找出问题所在。谁能告诉我哪里做错了。
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>
小服务程序: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>
编辑:
我面临的问题是 - 当我点击 'click button' 时,段落元素的 innerHTML 应该改变,但它没有改变。我尝试从地址栏运行 servlet 以检查它正在工作的 servlet 错误它打印 "Dynamic " 所以不是 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>
大家好,我是 ajax 的新手,正在尝试使用 javascript 在 servlet 和 html 页面之间创建一个简单的基本数据传输(不知道 jQuery ).但这不起作用尝试阅读教程但仍然无法找出问题所在。谁能告诉我哪里做错了。
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>
小服务程序: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>
编辑:
我面临的问题是 - 当我点击 'click button' 时,段落元素的 innerHTML 应该改变,但它没有改变。我尝试从地址栏运行 servlet 以检查它正在工作的 servlet 错误它打印 "Dynamic " 所以不是 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>