向Servlet发出AJAX POST请求失败

从我的客户端代码,我正在对我的servlet进行AJAX调用。 如果我使用GET作为请求方法。 一切正常,我得到回应。 但是当我发送请求作为POST时,servlet无法发送响应。 从日志中我发现,在使用POST进行ajax调用时,servlet“request”对象为null。 根据这篇文章: Servlet对AJAX请求的响应是空的 ,我正在为同源策略设置标头。

以下是我的参考代码:

function aimslc_ajaxCall(url,callback, postParams){ var xmlhttp = null if (window.XMLHttpRequest){ xmlhttp=new XMLHttpRequest(); } xmlhttp.onreadystatechange=function(){ if (xmlhttp.readyState==4 && xmlhttp.status==200){ eval( callback+"("+xmlhttp.responseText+")" ); } } if(postParams!=null && typeof postParams!="undefined" ){ xmlhttp.open("POST",url,true); xmlhttp.send(postParams); }else{ xmlhttp.open("GET",url,true); xmlhttp.send(); } } 

Servlet代码:

  public void doProcess (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { logger.info("doProcess::start..."+request.getQueryString()); response.setHeader("P3P","CP='NOI ADM DEV PSAi COM NAV OUR OTR STP IND DEM'"); response.setHeader("Access-Control-Allow-Origin","*"); response.setHeader("Access-Control-Allow-Credentials","true"); response.setHeader("Access-Control-Allow-Methods","POST, GET"); } 

在request.getQueryString()上引发nullexception

如果您发布post,所有数据都在请求正文中,而不是在url上。 从这里你可以看到getQueryString只获取url上的内容。

请参阅此处了解如何获取请求正文。

此外,如果您的数据是名称/值对,则可能需要使用getParameter和关联的方法。

如果请求为null,我问你在servlet上实现doPost吗?