我第一次尝试使用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格式发送它们?
很抱歉,如果我的问题看似微不足道,但我在网上搜索了很多,但找不到合适的资源。
答案 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',