Javascript servlet-为什么XMLHttpRequestResponseText总是空的?
我在这里试图解决这个问题,真是疯了。我在本地主机上运行的Tomcat中部署了以下servlet:8080-:Javascript servlet-为什么XMLHttpRequestResponseText总是空的?,javascript,ajax,tomcat,servlets,Javascript,Ajax,Tomcat,Servlets,我在这里试图解决这个问题,真是疯了。我在本地主机上运行的Tomcat中部署了以下servlet:8080-: @WebServlet(urlPatterns = { "/createcon" }, asyncSupported = true) public class CreateCon extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServl
@WebServlet(urlPatterns = { "/createcon" }, asyncSupported = true)
public class CreateCon extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
ConcurrentHashMap<String, AsyncContext> map;
public CreateCon() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
public void init() {
map = new ConcurrentHashMap<>();
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
AsyncContext context = request.startAsync(request,response);
context.setTimeout(10000);
if(!map.containsKey("Hello"))
map.put("Hello", context);
System.out.print("Inside GET");
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
AsyncContext context = map.get("Hello");
PrintWriter writer = context.getResponse().getWriter();
writer.write(request.getParameter("message"));
writer.flush();
System.out.print(request.getParameter("message"));
}
}
onreadystatechange
准确地在预期的时间触发,但是xmlhttp.responseText
始终为空。
我知道有一种叫做同源政策的东西。但我不明白为什么这是个问题?我在localhost:8080
上运行所有程序
为什么这种情况仍在发生?我该如何解决它?好的,解决了。我猜这是我自己的愚蠢错误。startchat()方法应修改为-:
function startChat() {
var xmlhttp = new XMLHttpRequest();
xmlhttp.open("GET", "/SampleTest/createcon", true);
xmlhttp.send();
xmlhttp.onreadystatechange=function(){
if (xmlhttp.readyState==4 && xmlhttp.status==200) {
alert(xmlhttp.responseText);
}
}
}
由于我试图从
startChat()
发出的请求中查找结果,控制台中的请求返回了什么?@Mouser您在谈论哪个请求?你能不能更具体一点你指的是什么?我指的是你在服务器上对/SampleTest/createcon
的XmlHTTPRequest。如果您在浏览器中查看控制台的“网络”选项卡,您可以检查请求是如何发送的以及它返回了什么。@Mouser它不返回任何内容。
function startChat() {
var xmlhttp = new XMLHttpRequest();
xmlhttp.open("GET", "/SampleTest/createcon", true);
xmlhttp.send();
xmlhttp.onreadystatechange=function(){
if (xmlhttp.readyState==4 && xmlhttp.status==200) {
alert(xmlhttp.responseText);
}
}
}