Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 30.12.2012, 00:51
Аспирант
Отправить личное сообщение для cOAPerator Посмотреть профиль Найти все сообщения от cOAPerator
 
Регистрация: 04.01.2012
Сообщений: 78

вывод значения функции через равный интервал
Всем привет! Начал изучать JS вот.. но чего то успехов мало пока

есть блок в который php функция выводит число, которое постоянно меняется:
<?php
echo "<b>".sizeof(file($base))."</b>";
?>

при обновлении страницы число меняется.
надо сделать чтобы число менялось с заданныем интервалом в 1 секунду, без перезагрузки страницы.
понимаю что надо использовать setInterval
но не меняется((

пробовал вот так:
var number = "<?=sizeof(file($base))?>";
var msgelement = document.getElementById('userOnline').innerHTML=setInterval('number', 1000);

число выводится но не меняется
помогите пожалуйста.. измаялся уже. вторые сутки голову ломаю.
Ответить с цитированием
  #2 (permalink)  
Старый 30.12.2012, 01:11
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

<div id="userOnline"></div>

<script type="text/javascript">
var number = 200;
var msgelement = document.getElementById('userOnline')
setInterval(function() {number+=100;msgelement.innerHTML=number}, 1000);
</script>
Ответить с цитированием
  #3 (permalink)  
Старый 30.12.2012, 01:24
Аспирант
Отправить личное сообщение для cOAPerator Посмотреть профиль Найти все сообщения от cOAPerator
 
Регистрация: 04.01.2012
Сообщений: 78

Deff, спасибо огромное за помошь, работает, только не так как я ожидал.
пример:
sizeof(file($base)) - подсчитвает юзеров онлайн, заносит их в файл и потом выводит.
открываем страницу в браузере - покажет 1
открваем ту же страницу в ДРУГОМ браузере покажет 2
НО при этом в первом браузере 1 на 2 не изменяется...

как быть?

UPD:
вот функция подсчета юзеров
//выделяем уникальный идентификатор сессии
$id = session_id();
if ($id!=""){
//текущее время
$CurrentTime = time();
//через какое время сессии удаляются
$LastTime = time() - 180;
//файл, в котором храним идентификаторы и время
$base = DOC_ROOT.MODULES."/user_session.txt";

$file = file($base);
$k = 0;
for ($i = 0; $i < sizeof($file); $i++) {
$line = explode("|", $file[$i]);
if ($line[1] > $LastTime) {
$ResFile[$k] = $file[$i];
$k++;
}
}

 for ($i = 0; $i<sizeof($ResFile); $i++) {
  $line = explode("|", $ResFile[$i]);
  if ($line[0]==$id) {
      $line[1] = trim($CurrentTime)."\n";
      $is_sid_in_file = 1;
  }
  $line = implode("|", $line); $ResFile[$i] = $line;
 }

 $fp = fopen($base, "w");
 for ($i = 0; $i<sizeof($ResFile); $i++) { fputs($fp, $ResFile[$i]); }
 fclose($fp);

 if (!$is_sid_in_file) {
  $fp = fopen($base, "a-");
  $line = $id."|".$CurrentTime."\n";
  fputs($fp, $line);
  fclose($fp);
 }
}

Последний раз редактировалось cOAPerator, 30.12.2012 в 01:45.
Ответить с цитированием
  #4 (permalink)  
Старый 30.12.2012, 01:43
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Сообщение от cOAPerator
НО при этом в первом браузере 1 на 2 не изменяется...
Для этого по таймеру нужно делать Aякс-запрос к файлу статистики сервера(а сейчас просто добавляется 100)
Ответить с цитированием
  #5 (permalink)  
Старый 30.12.2012, 01:46
Аспирант
Отправить личное сообщение для cOAPerator Посмотреть профиль Найти все сообщения от cOAPerator
 
Регистрация: 04.01.2012
Сообщений: 78

Сообщение от Deff Посмотреть сообщение
Для этого по таймеру нужно делать Aякс-запрос к файлу статистики сервера(а сейчас просто добавляется 100)
так эта функция и делает запрос к файлу статистики же... не?
я вот выше привел полный код скрипта подсчета статистики
Ответить с цитированием
  #6 (permalink)  
Старый 30.12.2012, 01:56
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Сообщение от cOAPerator
так эта функция и делает запрос к файлу статистики же... не?
Я не наю чо делается у Вас на сервере - от пользователя в браузере никак не узнать что творицо на сервере с иными пользователями не послав из брауза новый Аякс запрос с помощью ява-скрипт к серву
Ответить с цитированием
  #7 (permalink)  
Старый 30.12.2012, 02:00
Аспирант
Отправить личное сообщение для cOAPerator Посмотреть профиль Найти все сообщения от cOAPerator
 
Регистрация: 04.01.2012
Сообщений: 78

Сообщение от Deff Посмотреть сообщение
Я не наю чо делается у Вас на сервере - от пользователя в браузере никак не узнать что творицо на сервере с иными пользователями не послав из брауза новый Аякс запрос с помощью ява-скрипт к серву
setInterval(function() {msgelement.innerHTML=<?=sizeof(file($base))?>}, 1000);
а это разве не запрос с интервалом? функция объявлена, и вызывается с интервалом в 1 секунду.

но я понять не могу почему не обновляет, ведь данные есть в функции..
и походу она не выполляется снова эта функция.. а просто выводится 1 раз в секунду то что уже было выведено.

все, я понял теперь.

логичное продолжение:
как сделать запрос к файлу?
сам ajax запрос я написать могу. не смогу распарсить файл js-ом.. подскажете?

структура файла такая хэшID | время
oecrgl7etos39s1ntercbh2s24|1356818703
2uc6oc0g2g2alv6cotbb8k1c85|1356818711
...

Последний раз редактировалось cOAPerator, 30.12.2012 в 02:05.
Ответить с цитированием
  #8 (permalink)  
Старый 30.12.2012, 02:02
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Сообщение от cOAPerator
setInterval(function() {msgelement.innerHTML=<?=sizeof(file($base))?>}, 1000);
а это разве не запрос с интервалом? функция объявлена, и вызывается с интервалом в 1 секунду.
я лох в PHP, но имхо <?=sizeof(file($base))?> - вряд ли развертывается в браузере в ява-скрипт Аякс запроса
вы посмотрите выдачу HTML кода страницы - там чисто конкретная цифра - а не ява-скрипт функция

Последний раз редактировалось Deff, 30.12.2012 в 02:05.
Ответить с цитированием
  #9 (permalink)  
Старый 30.12.2012, 02:08
Аспирант
Отправить личное сообщение для cOAPerator Посмотреть профиль Найти все сообщения от cOAPerator
 
Регистрация: 04.01.2012
Сообщений: 78

Сообщение от Deff Посмотреть сообщение
я лох в PHP, но имхо <?=sizeof(file($base))?> - вряд ли развертывается в браузере в ява-скрипт Аякс запроса
вы посмотрите выдачу HTML кода страницы - там чисто конкретная цифра - а не ява-скрипт функция
да верно, я выше пока вам писал ответ тоже допер до этого, вы тож самое написали)

собственно вопрос новый в моем посте выше

продублирую:

как сделать запрос к файлу?
сам ajax запрос я написать могу. не смогу распарсить файл jscript-ом.. подскажете?

структура файла такая хэшID | время
oecrgl7etos39s1ntercbh2s24|1356818703
2uc6oc0g2g2alv6cotbb8k1c85|1356818711
Ответить с цитированием
  #10 (permalink)  
Старый 30.12.2012, 02:10
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Сообщение от cOAPerator
структура файла такая хэшID | время
oecrgl7etos39s1ntercbh2s24|1356818703
2uc6oc0g2g2alv6cotbb8k1c85|1356818711
...
Создайте аякс запрос - выведите данные через alert и выложите полученное в топик, посколь возможно будет отличаться от предполагаемого
Распарсить зная точно - не проблема
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
передача объекта через параметр функции PHP zhurchik Серверные языки и технологии 1 06.12.2012 15:24
Вызов функции печати страницы полученной через AJAX Garik AJAX и COMET 4 02.03.2011 17:05
Превращение значения обьекта в название функции. alexandre Общие вопросы Javascript 4 16.02.2011 01:04
Вывод значения value="" в <input type="file"> BK201 Общие вопросы Javascript 9 06.12.2010 18:30
Возвращение значения из функции dba Events/DOM/Window 21 06.10.2009 01:33