Вопрос. Ajax. Проверка наличия новых сообщений.

Тема в разделе "PHP", создана пользователем hofa, 29 мар 2009.

Статус темы:
Закрыта.
Модераторы: latteo
  1. hofa

    hofa Создатель

    Регистр.:
    28 май 2008
    Сообщения:
    39
    Симпатии:
    24
    Здравствуйте, уважаемые.

    Подскажите пожалуйста, как можно проверять наличие новых сообщений не обновляя всю страницу?

    Понимаю, что нужен ajax, но не понимаю как реализовать.
    Например, мне раз в 30 секунд необходимо делать запрос к базе и если есть новое сообщение, выводить alert.

    Поделитесь пожалуйста примером, если не жалко конечно...

    Заранее огромное Вам спасибо.
     
  2. Виллен

    Виллен

    Регистр.:
    12 мар 2009
    Сообщения:
    235
    Симпатии:
    60
    используй таймер на js примерно так
    Код:
    var id = setInterval(fn, delay);
    
    а про аякс можно почитать например тут:
    http://xmlhttprequest.ru/
     
  3. socker

    socker Постоялец

    Регистр.:
    15 сен 2007
    Сообщения:
    109
    Симпатии:
    17
    есть большое количество java-библиотек в которых реализовано много функции в том числе и ajax, рекомендую motools, для новичка самое то...
     
  4. _NoName_

    _NoName_ Создатель

    Регистр.:
    27 фев 2009
    Сообщения:
    26
    Симпатии:
    6
    мне кажется что для новичка самое то это Jquery
     
  5. hofa

    hofa Создатель

    Регистр.:
    28 май 2008
    Сообщения:
    39
    Симпатии:
    24
    Пожалуйста, можно поподробнее?
     
  6. Виллен

    Виллен

    Регистр.:
    12 мар 2009
    Сообщения:
    235
    Симпатии:
    60
    hofa
    вот смастерил по тем 2 мануалам что в моем первом посте

    index.html
    PHP:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <
    html>
    <
    head>
    <
    meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
    <
    title>AJAX primer</title>
    </
    head>
    <
    script type="text/javascript">
    <!--

    function 
    getXmlHttp(){
      var 
    xmlhttp;
      try {
        
    xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
      } catch (
    e) {
        try {
          
    xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
        } catch (
    E) {
          
    xmlhttp false;
        }
      }
      if (!
    xmlhttp && typeof XMLHttpRequest!='undefined') {
        
    xmlhttp = new XMLHttpRequest();
      }
      return 
    xmlhttp;
    }

    function 
    update()
    {
    var 
    xmlhttp getXmlHttp()
    xmlhttp.open('GET''/test.php'true);
    xmlhttp.onreadystatechange = function() {
      if (
    xmlhttp.readyState == 4) {
         if(
    xmlhttp.status == 200) {
            var 
    update_field document.getElementById('update_field');
            
    update_field.innerHTML xmlhttp.responseText;
            }
      }
    };
    xmlhttp.send(null);
    }
    -->
    </script>

    <body onLoad="var id = setInterval(update, 5000);">

    здесь будет обновляться значение
    <div id="update_field">
    0
    </div>

    </body>
    </html>
    test.php, лежит там же где index.html, у меня в корне www
    PHP:
    <?
    echo 
    time();
    ?>
     
    hofa нравится это.
  7. hofa

    hofa Создатель

    Регистр.:
    28 май 2008
    Сообщения:
    39
    Симпатии:
    24
    Виллен, спасибо огромное!
    Единственно была проблема с кодировкой, но она просто решилась добавлением
    header('Content-Type: text/html; charset=utf-8');
    в test.php
     
Статус темы:
Закрыта.