无法访问Servlet中的AJAX请求参数

时间:2013-11-18 15:13:48

标签: java jquery ajax servlets

我第一次尝试使用Servlet进行AJAX,这里是jQuery Ajax代码:

$.ajax({
    type : 'POST',
    url : '/myServlet',
    contentType : 'application/octet-stream; charset=utf-8',
    success : function(result) {alert(result)},
    processData : false,
    data : authResult['code']
});

这是servlet:

public class Authorize extends HttpServlet {
    public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException {
        response.setHeader("Cache-Control", "no-cache");
        response.setHeader("Pragma", "no-cache");
        Date currentTime= new Date();
        String message = String.format("Currently time is %tr on %tD.",currentTime, currentTime); //printing this, echos in the ajax "success" function
        response.getWriter().print(request.getParameterMap().toString()); //this, gives me blank Map "{}" 
    }
}


现在,请求参数去了哪里?或者,如果我错了,如何正确地访问/发送它们?

在我的情况下如何将响应参数发送到AJAX?以及如何以JSON格式发送它们?

很抱歉,如果我的问题看似微不足道,但我在网上搜索了很多,但找不到合适的资源。

3 个答案:

答案 0 :(得分:2)

您正在发送POST请求,因此您的参数位于请求正文中。如果要将它们作为简单参数访问,请使用GET

$.ajax({
    type : 'GET',
    url : '/myServlet',
    contentType : 'application/octet-stream; charset=utf-8',
    success : function(result) {alert(result)},
    processData : false,
    data : authResult['code']
});

在您的servlet中doGet而不是doPost方法。

如果您需要发布:请求请求正文并解析。

答案 1 :(得分:0)

我建议你看一下JAX-RS / Jersey。它只是简化了事情,特别是在通过AJAX和JSON与javascript代码进行通信时。

答案 2 :(得分:0)

只需删除

行即可
  
    

contentType:' application / octet-stream;字符集= UTF-8',