我想使用servlet使用jscript和jquery get将数据返回到html页面。它不起作用,我不明白为什么。我正在使用tomcat 7.056,servlet-api-2.5和jquery-1.11.1.min.js
问题在于以下行代码:
$.get('htp://.../ServletTeste2', function(responseText) {
Servlet代码
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class ServletTeste2 extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String text = "example text";
response.setContentType("text/plain");
response.setCharacterEncoding("UTF-8");
response.getWriter().write(text);
}
}
Html代码
<html lang="en">
<head>
<title>SO question 4112686</title>
<script src="http://code.jquery.com/jquery-1.11.1.min.js"></script>
<script>
$(document).ready(function() {
$('#somebutton').click(function() {
$('#somediv').text("hello....");
//document.location.href = "http://localhost:8080/ServletTeste2";
$.get('http://localhost:8080/ServletTeste2', function(responseText) {
$('#somediv').text("hello....");
$('#somediv').text(responseText);
});
});
});
</script>
</head>
<body>
<button id="somebutton">press here</button>
<div id="somediv"></div>
</body>
</html>
映射
<servlet>
<servlet-name>ServletTeste2</servlet-name>
<servlet-class>ServletTeste2</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ServletTeste2</servlet-name>
<url-pattern>/ServletTeste2/</url-pattern>
</servlet-mapping>
请注意,如果我从
中删除////document.location.href = "http:..../ServletTeste2";
servlet工作,即我在屏幕上有一个新页面,屏幕上显示“示例文本”。
问题在于
$.get('http://.../ServletTeste2',
返回false但
document.location.href = "http://.../ServletTeste2";
作品。
答案 0 :(得分:0)
自从我使用Servlet以来已经有一段时间了,但问题似乎与NomeshDeSilva指出的是跨域AJAX问题有关。
检查您的控制台,检查是否有这样的错误:
XMLHttpRequest cannot load http://localhost:8080/. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost' is therefore not allowed access.
如果是这样,那么这意味着您需要在服务器上授予权限,表明接受了跨域请求。
因为,在这种情况下,您可以控制servlet的代码,只需尝试将以下行添加到servlet代码中:
response.setHeader("Access-Control-Allow-Origin", "*");
重要提示:通配符允许任何域向您的主机发送请求。在检查这是否解决了问题后,建议您将“*”替换为您要发送请求的特定域。