向Servlet发出AJAX POST请求失败

时间:2011-09-01 00:55:58

标签: java ajax servlets post

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

以下是我的参考代码:

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()

上抛出一个null异常

1 个答案:

答案 0 :(得分:3)

如果您发布帖子,则所有数据都在请求正文中,而不是在网址上。从here开始,您会看到getQueryString仅获取网址上的内容。

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

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

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