2011-01-20 3 views
2

Я написал простой сервлет для обработки запроса Ajax. На стороне сервера вызывается doPost, но данные, которые я установил в объекте ответа, не отражаются на клиенте. (На самом деле, я не получаю ничего на клиенте в соответствии с Firebug). Я использую jQuery для обработки Ajax. КодОтсутствие ответа сервлета через Ajax

Клиент:

$.post(
    '/mapped/url?param=' + $('#eleId').val(), 
     function(data){ 
     alert(data); 
     }, 
     "xml" 
); 

На сервере:

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
    System.out.println("!!!In post!!!!"); 
    // some calculations go here 

    response.setContentType("application/xml"); 
    response.setHeader("Cache-Control", "no-cache"); 

    response.getWriter().write("<data><param number=\"\"></param></data>"); 
      response.setStatus(HttpServletResponse.SC_OK); 
} 

Заранее спасибо!

+1

Читать журналы сервера и удалять любые '' из 'web.xml' исключить одну и другую. Обратите внимание, что установка статуса ответа невозможна, когда тело ответа уже выполнено. Вы должны сделать это заранее, но, тем не менее, установка статуса 200 уже выполняется по умолчанию. Просто удалите эту строку. – BalusC

ответ

4

Вам нужно отлаживать это пошагово, так как эта проблема может означать что угодно: от неправильной конфигурации сервлета до ошибки в клиентском коде.

  1. Какой код статуса вы видите в firebug для запроса XHR (AJAX)? (ничего, кроме 200 - это красный флаг, проверка журналов сервера)
  2. Выполняется ли выполнение инструкции system.out? то есть «!!! В сообщении !!!!» вошли?
  3. Создайте простой html с формой, которая отправляется на сервлет и показывает, есть ли у вас какие-либо результаты.
  4. В зависимости от результатов, описанных выше, отладка дополнительно, если требуется.
+0

1. Я получаю 200 2. System.out печатается 3. Firebug говорит, что я получаю пустой ответ, но на вкладке xml написано: XML Parsing Error: элемент не найден. Местоположение: moz-nullprincipal: {7209b27a-18e0-4494-966b-e8951482d9a8} Номер строки 1, столбец 1: – maximus

+1

Попробуйте настроить тип контента на «text/xml» –

+0

Это сделало это, спасибо !!! – maximus

-1

Вы, возможно, придется явно закрыть выходной поток -

PrintWriter out = res.getWriter(); 

    out.println("Sample response"); 
    out.close(); 
+3

-1: Это уже сделано контейнером. Если бы это не так, это было бы ошибкой в ​​контейнере, и многие другие люди, чем только ОП, столкнулись бы с большими проблемами. – BalusC

Смежные вопросы