За последние 24 часа нас посетили 17389 программистов и 1713 роботов. Сейчас ищут 1488 программистов ...

как обновить данные без рефреш

Тема в разделе "JavaScript и AJAX", создана пользователем nikemat, 22 окт 2011.

  1. nikemat

    nikemat Guest

    друзья... подскажите, как осуществить автоматическое обновление страницы без перезагрузки, если в некий файл внесли изменения
     
  2. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Ajax + timer
     
  3. nikemat

    nikemat Guest

    я понимаю, потому и написал в соответствующую тему. скрипт можно?
     
  4. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    Не, если вопрос звучит как "Скрипт можно?", то тема не соответствующая. При таком раскладе, соответствующей темой будет фриланс :)
     
  5. Gromo

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

    С нами с:
    24 май 2010
    Сообщения:
    2.786
    Симпатии:
    2
    Адрес:
    Ташкент
    с использованием jquery
    [js]$('#html_block_id').load('http://your_site.com/address_of_script.php');[/js]
     
  6. nikemat

    nikemat Guest

    хороший форум: просишь помощи- отсылают то в хелпы, то в фриланс)) смысл тогда его? я, наверное, обратился бы в указанные источники и без советов...

    хорошо. давайте разберём скрипт по частям, чтоб ценность немного сбить и опыт соответствующий получить. сначала вот что: как обратиться к текстовому файлу (базе), в которую добавили данные?

    это мне ни о чём не говорит. комменты плз
     
  7. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    жжёшь :)
     
  8. nikemat

    nikemat Guest

    я штампую сайты десятками только на php, пусть по 3тыр, но успешно. и понятия не имею о mysql и ajax, потому что у меня нет времени их изучать. и, собственно, звание web-программиста не предполагает полиглотства в языках программирования. достаточно знать один, самый распространенный имхо. я отлично знаю php и javscript.
    ну а профессионалы в web-студиях получают в 10 раз больше, не спорю- они знают... рад за них :)
     
  9. Михаил

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

    С нами с:
    12 июл 2009
    Сообщения:
    545
    Симпатии:
    0
    Адрес:
    Bielarus
    если бы вы изучили эти самые ajax и mysql, то возможно получали бы больше
     
  10. nikemat

    nikemat Guest

    пока меня всё устраивает. и моя биография здесь никому не интересна. вопрос открыт. кто даст четкий ответ?
     
  11. Михаил

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

    С нами с:
    12 июл 2009
    Сообщения:
    545
    Симпатии:
    0
    Адрес:
    Bielarus
    вам же igordata ответил, если вы пишите что знаете javascript, то это значит вы знакомы с таймером и аяксом
     
  12. nikemat

    nikemat Guest

    с таймером знаком, с аяксом- нет.
    [js]setTimeOut(function,period)[/js]- таймер- это исмеется ввиду?
    тогда функция подключения к файлу с помощью аякс будет выглядеть...?
     
  13. Михаил

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

    С нами с:
    12 июл 2009
    Сообщения:
    545
    Симпатии:
    0
    Адрес:
    Bielarus
    теперь берёте любой javascript фрэймворк, например prototypejs http://www.prototypejs.org/
    и вечерами изучаете.
    но на чистом javascript это будет как-то так:
    [js]
    var xmlhttp;
    if (window.XMLHttpRequest)
    {// code for IE7+, Firefox, Chrome, Opera, Safari
    xmlhttp=new XMLHttpRequest();
    }
    else
    {// code for IE6, IE5
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
    }

    xmlhttp.onreadystatechange=function()
    {
    if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
    alert(xmlhttp.responseText);
    }
    }

    xmlhttp.open("POST","information.php",true);
    xmlhttp.send();


    [/js]

    php код

    PHP:
    1.  
    2. echo "ajax response";
    3.  
    не сложно да?
     
  14. nikemat

    nikemat Guest

    и чё, он выдаёт алерт с кодом страницы
     
  15. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    nikemat
    Ты пишешь, что знаешь JavaScript и PHP. Но при этом не знаешь Ajax. Такого не бывает, одно противоречит другому, так как PHP + JavaScript - это и есть Ajax :)
    Ajax - это не какой-то новый язык программирования, это лишь название технологии, в которой клиентские сценарии (например, написанные на JavaScript) взаимодействуют с серверными сценариями (например, написанными на PHP).
    Правильно, потому что в коде есть такая строчка:
    В свойстве responseText объекта xmlhttp содержится ответ, полученный от сервера в текстовом виде. Функция alert его отображает. Тебе это написали просто как наглядный пример запроса к серверу с помощью JavaScript. Ты же можешь делать всё что угодно с этим ответом от сервера.
     
  16. yurij__

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

    С нами с:
    27 мар 2010
    Сообщения:
    17
    Симпатии:
    0
    Адрес:
    Симферополь
    мда.. Евгений Попов отдыхает вместе со своими адептами.

    +1
     
  17. nikemat

    nikemat Guest

    [js]
    function ajx(){
    var xmlhttp;
    if (window.XMLHttpRequest)
    {// code for IE7+, Firefox, Chrome, Opera, Safari
    xmlhttp=new XMLHttpRequest();
    }
    else
    {// code for IE6, IE5
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
    }

    xmlhttp.onreadystatechange=function()
    {
    if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
    obn.innerText=xmlhttp.responseText;
    }

    }

    xmlhttp.open("POST","add.txt",true);
    xmlhttp.send()
    }

    document.getElementById('obn');
    setInterval('ajx()',3200);
    [/js]

    HTML:
    1. <div id=obn> </div>
    в IE работает, в др.браузерах- нет :(

    а самое главное- как мне теперь всё это обработать? там ведь текстовая база, новые сообщения внизу. а мне надо перевернуть массив, как я это делал на php.
     
  18. tommyangelo

    tommyangelo Старожил

    С нами с:
    6 дек 2009
    Сообщения:
    2.549
    Симпатии:
    0
    Адрес:
    Мариуполь
    Используй JQuery Ajax - он кроссбраузерный

    вместо add.txt направляй на script.php и в нём твори всё что душе угодно
     
  19. nikemat

    nikemat Guest

    спасибо всем :)
     
  20. Gromo

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

    С нами с:
    24 май 2010
    Сообщения:
    2.786
    Симпатии:
    2
    Адрес:
    Ташкент
    мне кажется, что [js]$('#html_block_id').load('http://your_site.com/address_of_script.php');[/js] было бы легче :))
     
  21. nikemat

    nikemat Guest

    может и проще, но мне не совсем понятно, как это привязывается к странице. хотя я вчера вечером посидел над тем скриптом, заработало))

    в моём случае будет выглядеть как-то так? поправьте, если нет.
    [js] $('#obn').load('add.php');[/js]
    HTML:
    1. <div id=obn> </obn>
    сейчас возникла другая проблема: скрипт обновляет данные 1-2 раза, а потом перестаёт. я так понимаю, страница кешируется? но я запрещал кеширование средствами php и в адресе страницы подставлял запрос с time()- то же самое.
     
  22. Михаил

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

    С нами с:
    12 июл 2009
    Сообщения:
    545
    Симпатии:
    0
    Адрес:
    Bielarus
  23. nikemat

    nikemat Guest

     
  24. Михаил

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

    С нами с:
    12 июл 2009
    Сообщения:
    545
    Симпатии:
    0
    Адрес:
    Bielarus
    по идее должно работать. сейчас проверить не могу.
    только могу сказать, что следите за статусом и состоянием, может что с ними.

    [js]

    xmlhttp.onreadystatechange=function()
    {
    if( xmlhttp.readyState == 4)
    {alert(xmlhttp.status);}

    if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
    obn.innerText=xmlhttp.responseText;
    }

    }

    [/js]
    смотрите что приход, когда загуржено состояние 4, каков статус?
     
  25. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    По идее это:

    [js]var xmlHttpObject = false;
    if(window.XMLHttpRequest)
    xmlHttpObject = new XMLHttpRequest();
    else
    xmlHttpObject = new ActiveXObject('Microsoft.XMLHTTP');[/js]

    100% кроссбраузерно...