За последние 24 часа нас посетили 17810 программистов и 1700 роботов. Сейчас ищут 1676 программистов ...

Простой пример AJAX

Тема в разделе "JavaScript и AJAX", создана пользователем bershadskij, 25 июл 2006.

  1. bershadskij

    bershadskij Активный пользователь

    С нами с:
    25 июл 2006
    Сообщения:
    17
    Симпатии:
    0
    Начал знакомство з Ява и Аджаксом.
    Столкнулся с проблемой
    Вот код страницы
    Код (Text):
    1. <html><head>
    2. <script type="text/javascript">
    3. function ajaxRead(file){
    4. var xmlObj = null;
    5. if(window.XMLHttpRequest){
    6. xmlObj = new XMLHttpRequest();
    7. } else if(window.ActiveXObject){
    8. xmlObj = new ActiveXObject("Microsoft.XMLHTTP");
    9. } else {
    10. return;
    11. }
    12. xmlObj.onreadystatechange = function(){
    13. if(xmlObj.readyState == 4){
    14. updateObj('xmlObj', xmlObj.responseXML.getElementsByTagName('data')[0].firstChild.data);
    15. }
    16. }
    17. xmlObj.open ('GET', file, true);
    18. xmlObj.send ('');
    19. }
    20. function updateObj(obj, data){
    21. document.getElementById(obj).firstChild.data = data;
    22. }
    23. </script>
    24. </head>
    25. <body>
    26. <a href="#" onclick="ajaxRead('data.xml')">Обновление новых даных</a>
    27. <p id="xmlObj">данные по умолчанию.</p>
    28. </body>
    29. </html>
    Проблема заключается в том, что браузер кеширует страницу.
    Тоесть при первом нажатии на ссылку данные загружаются с файла (в даном случае с data.xml). Но при последующих нажатиях на ссылку данные не обновляются. (независимо от изменения содержимого файла data.xml)
    Как можно с етим боротся?
    Иль может есть какае-то другое решение с применением ajax?

    Примечание: хочу перевести свой мини-чат на ajax (www.bershad.info)
     
  2. Vah

    Vah Активный пользователь

    С нами с:
    15 май 2006
    Сообщения:
    228
    Симпатии:
    0
    очень просто..... отдавать xml скриптом..... он не отдает заголовки типа Last-Modified и т.д. и т.п. и соответственно не кешируется
     
  3. bershadskij

    bershadskij Активный пользователь

    С нами с:
    25 июл 2006
    Сообщения:
    17
    Симпатии:
    0
    Спасибо.
    А можно чуть-чуть поподробнее? Хоть какой-то пример.
     
  4. simpson

    simpson Активный пользователь

    С нами с:
    11 фев 2006
    Сообщения:
    1.650
    Симпатии:
    0
    Адрес:
    Санкт-Петербург
    из мануала:
    PHP:
    1. <?php
    2. header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
    3. header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // Date in the past
    4. ?>
    если хочется еще подробнее - то идем сюда и читаем.
     
  5. Ti

    Ti Активный пользователь

    С нами с:
    3 июл 2006
    Сообщения:
    2.378
    Симпатии:
    1
    Адрес:
    d1.ru, Екатеринбург
    http://xpoint.ru/forums/programming/PHP/faq.xhtml#160
     
  6. bershadskij

    bershadskij Активный пользователь

    С нами с:
    25 июл 2006
    Сообщения:
    17
    Симпатии:
    0
    Всем спасибо!
    Все бы хорошо, но вот в чем дело:
    Ajax используєтся только в одном блоке "Мини-чат" из целого сайта.
    По сему не логично было бы запрещать кеширование всей страницы (а поскольку етот блок есть на каждой странице, то и всего сайта) ради одного мааленького блока.
    я пробавал присоеденять к ссылке переменную
    типа
    Код (Text):
    1. <a href='#
    2. <?echo time();?>
    3. '>
    значение которой не нужно, но генерируется случайно, или по времени. Но тоже ничего не получилось
     
  7. simpson

    simpson Активный пользователь

    С нами с:
    11 фев 2006
    Сообщения:
    1.650
    Симпатии:
    0
    Адрес:
    Санкт-Петербург
    bershadskij
    а для чего ты это делал?
    пхп отрабатывает на сервере. после генерации страницы эта ссылка будет все равно постоянной.

    про кеширование ты не так понял. заголовки надо посылать не при генерации всей страницы, а при отправке data.xml.
     
  8. bershadskij

    bershadskij Активный пользователь

    С нами с:
    25 июл 2006
    Сообщения:
    17
    Симпатии:
    0
    :) я об етом не подумал
     
  9. bershadskij

    bershadskij Активный пользователь

    С нами с:
    25 июл 2006
    Сообщения:
    17
    Симпатии:
    0
    Пробовал.Не работает.
    Ведь дата.xml и так не кешируется.
    Более того, даже если после первой загрузки я УДАЛЮ data.xml то все равно при повторной перегрузке страницы и нажатии на ссылку появляются те же данные.
    Может со скриптом что не так, не дописан он, что ли?
     
  10. vasa_c

    vasa_c Активный пользователь

    С нами с:
    22 мар 2006
    Сообщения:
    1.760
    Симпатии:
    0
    Адрес:
    гор.Ленинград
    Вот это и означает, что он КЭШИРУЕТСЯ!
     
  11. Ti

    Ti Активный пользователь

    С нами с:
    3 июл 2006
    Сообщения:
    2.378
    Симпатии:
    1
    Адрес:
    d1.ru, Екатеринбург