没有通过Ajax的servlet响应

时间:2011-01-20 19:36:10

标签: java jquery ajax servlets websphere

我编写了一个用于处理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);
}

提前致谢!

2 个答案:

答案 0 :(得分:4)

您需要逐步调试此问题,因为此问题可能意味着从不正确的Servlet配置到客户端代码中的错误。

  1. 您在firebug中看到XHR(AJAX)请求的状态代码是什么? (200以外的任何东西都是红旗。检查服务器日志)
  2. 你的system.out语句是否被执行?即是“!!!在帖子!!!!”记录?
  3. 使用发布到servlet的表单创建一个简单的html,看看是否有任何结果。
  4. 根据上述步骤的结果,如果需要,请进一步调试。

答案 1 :(得分:-1)

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

  PrintWriter out = res.getWriter();

  out.println( "Sample response" );
  out.close();