Не удается выполнить запрос AJAX POST сервлету - PullRequest
1 голос
/ 01 сентября 2011

Исходя из моего клиентского кода, я делаю AJAX-вызов своему сервлету. Если я использую GET в качестве метода запроса. Все работает, и я получаю ответ. Но когда я отправляю запрос как POST, сервлет не может отправить ответ. Из журнала я обнаружил, что в сервлете «запрос» объект равен нулю, когда совершается ajax-вызов с POST. Согласно этому посту: Ответ сервлета на запрос 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();
  }
}

Код сервлета:

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

1 Ответ

3 голосов
/ 01 сентября 2011

если вы делаете сообщение, все данные находятся в теле запроса, а не в URL. Начиная с здесь вы видите, что getQueryString получает только то, что указано в URL.

См. здесь , чтобы узнать, как получить тело запроса.

Кроме того, если ваши данные представляют собой пары имя / значение, вы можете использовать getParameter и связанные методы.

Если запрос нулевой, я спрашиваю, реализуете ли вы doPost в вашем сервлете?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...