[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: таймер с обратным отсчетом
Филибер
Прошу прошения за новую тему, но думаю, что вопрос достаточно глобальный и затрагивает не только серверный код, но и код, исполняемый на машине пользователя.
Вопрос в следующем: нужно написать таймер, который отсрочивает некое действие - неважно какое - на сервере. При этом в браузере отображается обратный отсчет. Естественно, это должно быть синхронизировано, и естественно, не постоянно, а в моменты, когда 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 для отсрачивания чего то на сервере применяется крон и довольно успешно.

Спустя 22 часа, 46 минут, 45 секунд (29.07.2010 - 20:00) Филибер написал(а):
вообще-то надежда была на некоторые советы... скажите хоть, с чего начинать? про какую команду JS почитать? перечитывать весь справочник не хочется, потому как для начинающего это верный способ не сделать вообще ничего!

Спустя 15 минут, 3 секунды (29.07.2010 - 20:15) Basili4 написал(а):
Филибер
В гугл заходишь пишешь Cron и читаешь что он выдает все. Какой еще совет тебе же сказали к php твой ворос отношения не имеет и js тоже мало а вот юзать Cron это то самое.
Для справки Cron это планировщик задач для никсов по моему и для винды есть.

Спустя 22 минуты, 31 секунда (29.07.2010 - 20:38) twin написал(а):
Крон тут непричем, не сбивай человека с толку.
Это технология ajax.

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

Спустя 15 минут, 52 секунды (29.07.2010 - 20:54) Филибер написал(а):
О! здорово! Ушел в астрал, разбираться в коде... ждите мой кривой креатив на днях.

Спустя 1 день, 18 часов, 52 минуты, 9 секунд (31.07.2010 - 15:46) Филибер написал(а):
Хочу поблагодарить twin! Интересная вещь, и погрузила меня в раздумья надолго smile.gif
Напомню код из статьи про 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 не определять как локальную, то ответа вообще нет.
Вопрос: как это сделать правильно?
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.