通过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);
}
提前感谢!
您需要逐步调试此问题,因为此问题可能意味着任何不正确的Servlet配置到客户端代码中的错误。
- 你在XBRL(AJAX)请求的萤火虫中看到了什么状态码? (除了200以外的任何内容都是红旗。检查服务器日志)
- 是否正在执行您的system.out语句?即“!!!在帖子!!!!”登录?
- 用一个表单发布到servlet并查看是否得到任何结果返回,创建一个简单的html。
- 根据以上步骤的结果,如果需要进一步调试。
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
尝试将内容类型设置为“text/xml” – 2011-01-20 21:36:40
您可能需要显式地关闭输出流 -
PrintWriter out = res.getWriter();
out.println("Sample response");
out.close();
读取服务器日志,并从`web.xml`删除任何``排除一个又一个。请注意,当响应正文已经提交时,不能设置响应状态。你应该事先做好,但仍然是,默认情况下,设置状态200已经完成。只要删除该行。 –
BalusC
2011-01-20 20:35:22