Автор Тема: AJAX - не подгружается запрос  (Прочитано 1767 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн TERRAPOD

  • Действительный статский советник
  • *****
  • Сообщений: 1598
  • Репутация: 25
  • Пол: Мужской
  • Texas Hold'em Freak
  • SkypeID: Andrei Hes
AJAX - не подгружается запрос
« : ЅЮпСам 16, 2008, 05:17:47 pm »
Понадобилось сделать небольшую "фичу" без перезагрузки страницы и решил использовать XMLHttpRequest. Раньше с AJAX ничего не делал. Получил проблему, опишу ее на простом примере:
Страничка, которая выполняет асинхронный запрос такая:
Код: (html) [Выделить]
<html>
<body>
<script type="text/javascript">
  function InitializeXMLHttpRequest(){
    try{
      return new XMLHttpRequest();
    }
    catch(e){
      try{
        return new ActiveXObject("Msxml2.XMLHTTP");
      }
      catch(e){
        try{
          return new ActiveXObject("Microsoft.XMLHTTP");
        }
        catch(e){
          return null;
        }
      }
    }
  }
 
  function AjaxFunction(){
    var xmlHttp = InitializeXMLHttpRequest();
    if(null == xmlHttp){
      alert("Can't Create XMLHttp Object");
      return;
    }
    xmlHttp.onreadystatechange = function(){
      if(xmlHttp.readyState == 4){
        document.getElementById('responseText').value = xmlHttp.responseText;
      }
    }
    xmlHttp.open("GET", "http://localhost:8084/Example1Server/example1.do", true);
    xmlHttp.send(null);
  }
</script>

Response Text here: <input type="text" id="responseText"/>
<input type="button" value="Test AJAX Function" onclick="AjaxFunction();"/>

</body>
</html>
Все по-минимуму, проще не придумал. Далее есть Example1Server, который шлет в response случайные числа. (Готовый проект с war'кой в атаче, если поможет).

Теперь открываю эту html-страницу, нажимаю кнопку - все нормально, приходит запрос. Нажимаю 2-й раз: в браузере все ОК - нет ошибок, но число остается прежним и не меняется. По логу сервлета видно, что запрос не приходил. Где и что нужно поправить, может кто знает?

Оффлайн TERRAPOD

  • Действительный статский советник
  • *****
  • Сообщений: 1598
  • Репутация: 25
  • Пол: Мужской
  • Texas Hold'em Freak
  • SkypeID: Andrei Hes
Re: AJAX - не подгружается запрос
« Ответ #1 : ЅЮпСам 17, 2008, 12:58:44 am »
Решил проблему. RFC рулит. Поменять:
Код: (java) [Выделить]
response.getOutputStream().print(String.valueOf(new java.util.Random().nextInt()));на:
Код: (java) [Выделить]
response.setHeader("Cache-Control", "no-store, no-cache,  must-revalidate");
response.setDateHeader("Expires", new java.util.Date().getTime());
response.getOutputStream().print(String.valueOf(new java.util.Random().nextInt()));
Кому лень читать нудные доки - вот хорошая статья:
http://nomagic.ru/all.php?aid=58

Оффлайн gigauser

  • Статский советник
  • *****
  • Сообщений: 976
  • Репутация: 20
  • Banned
Re: AJAX - не подгружается запрос
« Ответ #2 : ЅЮпСам 17, 2008, 01:11:26 am »
TERRAPOD++)
Banned