Вопрос в следующем: нужно написать таймер, который отсрочивает некое действие - неважно какое - на сервере. При этом в браузере отображается обратный отсчет. Естественно, это должно быть синхронизировано, и естественно, не постоянно, а в моменты, когда 1. - счетчик дошел до нуля. 2. - прервалась\восстановилась сессия. 3. - событие на сервере произошло раньше, чем закончилось время.
Надеюсь на ваши советы - причем желательно не просто уже написанный код, а с комментариями, или даже не код, а отсылки - типа, нубяра, обрати внимание на вот эту команду и почитай про нее документацию. это даже предпочтительнее, ибо хочется понять и научиться самому. А то тычешься сам, не зная куда, в результате тонешь в море информации и потихоньку забиваешь...
Спустя 5 минут, 27 секунд (28.07.2010 - 20:54) sergeiss написал(а):
Цитата (Филибер @ 28.07.2010 - 21:48) |
При этом в браузере отображается обратный отсчет. |
Это возможно только на JS, к разделу "Бесплатные курсы ПХП" отношения не имеет. Переношу тему в раздел JS.
Спустя 19 минут, 40 секунд (28.07.2010 - 21:13) Basili4 написал(а):
Филибер
Это даже не JS для отсрачивания чего то на сервере применяется крон и довольно успешно.
Это даже не JS для отсрачивания чего то на сервере применяется крон и довольно успешно.
Спустя 22 часа, 46 минут, 45 секунд (29.07.2010 - 20:00) Филибер написал(а):
вообще-то надежда была на некоторые советы... скажите хоть, с чего начинать? про какую команду JS почитать? перечитывать весь справочник не хочется, потому как для начинающего это верный способ не сделать вообще ничего!
Спустя 15 минут, 3 секунды (29.07.2010 - 20:15) Basili4 написал(а):
Филибер
В гугл заходишь пишешь Cron и читаешь что он выдает все. Какой еще совет тебе же сказали к php твой ворос отношения не имеет и js тоже мало а вот юзать Cron это то самое.
Для справки Cron это планировщик задач для никсов по моему и для винды есть.
В гугл заходишь пишешь Cron и читаешь что он выдает все. Какой еще совет тебе же сказали к php твой ворос отношения не имеет и js тоже мало а вот юзать Cron это то самое.
Для справки Cron это планировщик задач для никсов по моему и для винды есть.
Спустя 22 минуты, 31 секунда (29.07.2010 - 20:38) twin написал(а):
Крон тут непричем, не сбивай человека с толку.
Это технология ajax.
Про аякс можешь тут почитать, ну и спрашивай дальше.
Это технология ajax.
Про аякс можешь тут почитать, ну и спрашивай дальше.
Спустя 15 минут, 52 секунды (29.07.2010 - 20:54) Филибер написал(а):
О! здорово! Ушел в астрал, разбираться в коде... ждите мой кривой креатив на днях.
Спустя 1 день, 18 часов, 52 минуты, 9 секунд (31.07.2010 - 15:46) Филибер написал(а):
Хочу поблагодарить twin! Интересная вещь, и погрузила меня в раздумья надолго
Напомню код из статьи про AJAX с моими комментариями, как я его понял:
Напомню код из статьи про AJAX с моими комментариями, как я его понял:
Цитата |
<html> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <head> <script type="text/javascript"> var req = Create(); function ge(id) // определяем место, куда будет выводиться наш текст, ради которого все и затевалось { return document.getElementById(id); } function Create(){ // мультибраузерность if(navigator.appName == "Microsoft Internet Explorer"){ req = new ActiveXObject("Microsoft.XMLHTTP"); }else{ req = new XMLHttpRequest(); } return req; } function Request(query) // отсылка данных серверу, вызов функции, принимающей результат от него { req.open('post', 'ajax.php' , true ); req.onreadystatechange = Refresh; req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=utf-8"); req.send(query); } function Refresh() // прием результата от сервера { if( req.readyState == 4 ) // если ответ есть ge('ajax').innerHTML = req.responseText; // пихаем его в элемент "ajax" else ge('ajax').innerHTML = '<img src="prel.gif" />'; // иначе выводим туда картинку } function Pusk() // формирование данных для сервера, полученных из формы "myid" { var query; query ='txt='+encodeURIComponent(ge('myid').value); Request(query); } </script> </head> <body> <div id="ajax"></div> <!-- Здесь я немного изменил форму, чтоб получать фиксированный набор данных--> Задержка в минутах<br> <select id='myid'> <option selected>1</option> <option>2</option> <option>3</option> <option>4</option> </select> <br> <input type="button" value="Тырц" onClick="Pusk()"> <img src="prel.gif" width="1" height="1" /> </body> </html> |
Код на сервере не трогал:
ajax.php
Цитата |
<?php $txt = isset($_POST['txt'])?$_POST['txt']:NULL; sleep(3); echo "<br>"; echo $txt; ?> |
До этого момента все работает на моем локальном апаче. Дальше я понял, что ковырять мне нужно функцию, принимающую ответ сервера:
Цитата |
function Refresh() // прием результата от сервера { if( req.readyState == 4 ) // если ответ есть ge('ajax').innerHTML = req.responseText; // пихаем его в элемент "ajax" else ge('ajax').innerHTML = '<img src="prel.gif" />';// иначе выводим туда картинку } |
Для начала вместо картинки я хотел поместить текст, который впоследствии будет динамически изменяться (обратный отсчет). Вот так:
Цитата |
function Refresh() // прием результата от сервера { if( req.readyState == 4 ) // если ответ есть ge('ajax').innerHTML = req.responseText; // пихаем его в элемент "ajax" else var mytext = '0'; // неважно, пока "ноль", потом буду передавать начальное значение при вызове функции и изменять значение циклом ge('ajax').innerHTML = mytext; } |
И вот тут вышла затыка. mytext отображается, но через 3 секунды от сервера приходит ответ : undefined
кстати, если mytext не определять как локальную, то ответа вообще нет.
Вопрос: как это сделать правильно?