通过Ajax没有servlet响应

问题描述:

我写了一个简单的servlet来处理Ajax请求。在服务器端,调用doPost,但我在响应对象中设置的数据不反映在客户端上。 (其实,根据Firebug,我没有在客户端上得到任何东西)。我正在使用jQuery来处理Ajax。通过Ajax没有servlet响应

客户端代码:

$.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); 
} 

提前感谢!

+1

读取服务器日志,并从`web.xml`删除任何``排除一个又一个。请注意,当响应正文已经提交时,不能设置响应状态。你应该事先做好,但仍然是,默认情况下,设置状态200已经完成。只要删除该行。 – BalusC 2011-01-20 20:35:22

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

  1. 你在XBRL(AJAX)请求的萤火虫中看到了什么状态码? (除了200以外的任何内容都是红旗。检查服务器日志)
  2. 是否正在执行您的system.out语句?即“!!!在帖子!!!!”登录?
  3. 用一个表单发布到servlet并查看是否得到任何结果返回,创建一个简单的html。
  4. 根据以上步骤的结果,如果需要进一步调试。
+0

1.我得到一个200 2. system.out正在打印 3. Firebug说我得到一个空的响应,但xml标签说:XML解析错误:找不到元素位置:moz-nullprincipal: {7209b27a-18e0-4494-966b-e8951482d9a8}行号1,列1: – maximus 2011-01-20 20:49:23

+1

尝试将内容类型设置为“text/xml” – 2011-01-20 21:36:40

您可能需要显式地关闭输出流 -

PrintWriter out = res.getWriter(); 

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