servlet-为什么XMLHttpRequest responseText始终为空
servlet - Why is the XMLHttpRequest responseText always blank?
我在试图解决这里的这个问题时失去了理智。我在Tomcat中部署了以下servlet,运行在localhost:8080-:上
@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"));
}
}
正如您所看到的,我正在尝试存储在Map中创建的AsyncContext。I代码在带有Tomcat的Eclipse中运行良好。正如您在上面看到的,我添加了System.out.print
来实际检查代码是否正常工作。它的工作完全符合预期。
但问题出在下面的javascript上-:
function postMessage(){
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange=function(){
if (xmlhttp.readyState==4 && xmlhttp.status==200) {
alert(xmlhttp.responseText);
}
}
xmlhttp.open("POST", "/SampleTest/createcon", true);
xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
var messageText = escape(document.getElementById("i1").value);
document.getElementById("i1").value = "";
xmlhttp.send("message="+messageText);
}
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()
上提出的请求中找到结果。
相关文章:
- servlet-为什么XMLHttpRequest responseText始终为空
- 我什至无法让 $().text 正常工作.改为输出大量代码
- JS “for (var key in arr)” >抛出我自己的 Array.prototypes,但不是固有的.为什
- 当我在 Amazon S3 中将安静设置为 true 以在 deleteObjects() 方法中分析安静模式时会发生什
- ResponseText 为 null,即使它应该设置为 JavaScript
- 在javascript responseText中将临时变量声明为全局变量
- 如何将json/array从中的ajax responseText转换为javascript数组
- GM_xmlhttpRequest responseText在Firefox中为空,但在Chrome中是完美的
- 我用AngularJS创建了一个单页房地产列表web应用程序,决定使用/$http服务提供数据,但没有成功.有人知道为什
- ajax GET请求responseText为空
- responseText为空,但显示在控制台上
- 在JavaScript中,console.log给出了for循环的每个值.但是var.text只显示最后一个值.这是为什
- Ajax请求成功,但收到的responseText为空白
- 响应XML为空,尽管responsetext是有效的.net webservice
- 我有一个'Uncaught SyntaxError: Unexpected token函数'我不明白为什
- XMLHttpRequest状态为4,但responseText为空
- 将XMLHttpRequest responseText转换为XML数据
- 如何将浏览器内容的内容替换为xhr.responseText
- xmlhttprequest中的responseText为空
- XMLHttpRequest的状态为200,但responseText为空