Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 向Servlet发出AJAX POST请求失败_Java_Ajax_Servlets_Post - Fatal编程技术网

Java 向Servlet发出AJAX POST请求失败

Java 向Servlet发出AJAX POST请求失败,java,ajax,servlets,post,Java,Ajax,Servlets,Post,从客户端代码中,我正在对servlet进行AJAX调用。如果我使用GET作为请求方法。一切正常,我得到了回复。但当我以POST的形式发送请求时,servlet无法发送响应。从日志中我发现,当使用POST调用ajax时,servlet中的“request”对象为null。根据这篇文章: ,我正在为同源策略设置标题 以下是我的代码供参考: function aimslc_ajaxCall(url,callback, postParams){ var xmlhttp = null if (wi

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

以下是我的代码供参考:

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");
 }

在请求时引发null异常。getQueryString()

如果执行post,则所有数据都在请求正文中,而不是url上。从中可以看出,
getQueryString
只获取url上的内容

有关如何获取请求正文的信息,请参见

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


如果请求为null,我会问您是否在servlet上实现
doPost

检查ajax中的If语句,它似乎总是在没有任何负载的情况下执行xmlhttp.send()。尝试发出警报以检查每次选择的条件选项。实际上,如果没有参数,我会使用GET方法发出请求。编辑代码使其更清晰这是有意义的。我有doPost()。下面是同一个问题——“request.getAttribute()”和“request.getParameter()”之间有什么区别。在我使用的servlet中,request.getAttribute()用于检索请求参数。这似乎适用于GET,但不适用于POST。getParameter用于获取from key=val的参数。GET属性获取请求属性,这些属性不同。您想使用getParameter和关联的methods@indusBull:HttpServletRequest具有
getParameter()
getAttribute()
方法。您认为它返回请求参数的是哪一个?试着逻辑地思考…@BalusC在问这个问题之前,我的逻辑结论是getParameter()。但是我正在访问的servlet(由某个经验丰富的人编写)有getAttributes()方法。这让我很困惑。它只是用来获取请求属性。不是参数。