Java 通过Ajax没有servlet响应

Java 通过Ajax没有servlet响应,java,jquery,ajax,servlets,websphere,Java,Jquery,Ajax,Servlets,Websphere,我已经编写了一个用于处理Ajax请求的简单servlet。在服务器端,调用了doPost,但是我在响应对象中设置的数据没有反映在客户端上。(事实上,根据Firebug的说法,我没有得到任何关于客户的信息)。我使用jQuery来处理Ajax 客户端代码: $.post( '/mapped/url?param=' + $('#eleId').val(), function(data){ alert(data); }, "xml" ); 在服

我已经编写了一个用于处理Ajax请求的简单servlet。在服务器端,调用了
doPost
,但是我在响应对象中设置的数据没有反映在客户端上。(事实上,根据Firebug的说法,我没有得到任何关于客户的信息)。我使用jQuery来处理Ajax

客户端代码:

$.post(
   '/mapped/url?param=' + $('#eleId').val(),
      function(data){
        alert(data);
      },
      "xml"
);
在服务器上:

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    System.out.println("!!!In post!!!!");
    // some calculations go here

    response.setContentType("application/xml");
    response.setHeader("Cache-Control", "no-cache");

    response.getWriter().write("<data><param number=\"\"></param></data>");
            response.setStatus(HttpServletResponse.SC_OK);
}
protectedvoiddopost(HttpServletRequest请求,HttpServletResponse响应)抛出ServletException,IOException{
System.out.println(!!!In post!!!!);
//这里有一些计算
setContentType(“应用程序/xml”);
setHeader(“缓存控制”、“无缓存”);
response.getWriter().write(“”);
response.setStatus(HttpServletResponse.SC_OK);
}

提前谢谢

您需要分步骤进行调试,因为这个问题可能意味着从不正确的Servlet配置到客户端代码中的错误

  • 您在firebug中看到的XHR(AJAX)请求的状态代码是什么?(除200以外的任何内容都是红色标志。请检查服务器日志)
  • 您的system.out语句正在执行吗?i、 e.“!!!在帖子中!!!!”是否已记录
  • 使用一个表单创建一个简单的html,将其发布到servlet,然后查看是否返回任何结果
  • 根据以上步骤的结果,如果需要,请进一步调试

  • 您可能必须显式关闭输出流-

      PrintWriter out = res.getWriter();
    
      out.println( "Sample response" );
      out.close();
    

    -1:容器已经完成了。如果不是这样的话,它将是容器中的一个bug,而不仅仅是OP会遇到严重的问题。请阅读服务器日志并从
    web.xml
    中删除任何
    ,以排除其中一个。请注意,当响应主体已提交时,无法设置响应状态。您应该事先进行设置,但在默认情况下,设置状态200已经完成。把那条线去掉就行了。我得到一个200 2。system.out正在打印3。Firebug说我得到了一个空响应,但xml选项卡上显示:xml解析错误:找不到元素位置:moz nullprincipal:{7209b27a-18e0-4494-966b-e8951482d9a8}行号1,第1列:尝试将内容类型设置为“text/xml”