Автоматическое обновление

 
0
 
JavaScript
ava
Sukhof | 04.12.2004, 20:29
Привет народ! Уже задал этот вопрос на пхп форуме отправили сюда, вопрос такой: (цитирую дословно smile )

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

З.Ы.: И пожалуйста не предлагайте использовать фреймы.
Kommentare (18)
ava
sergejzr | 04.12.2004, 20:32 #
Цитата (Sukhof @ 4.12.2004, 19:29)
З.Ы.: И пожалуйста не предлагайте использовать фреймы.

Почему?
По другому никак smile
ava
Sukhof | 04.12.2004, 20:40 #
так понял ща обосрут, ладно народ из ява скриптов я знаю только его дескрипторы и не более, Ваш брат тоже иногда интересуется пхп скриптами, помогите ламеру в ява скриптах. На счет фреймов когда хтмл начинал учить, мне говорили чтобы обновлять отдельные части страницы надо фремы использовать. Так сказать детские стереотипы остались.
ava
Aliance | 04.12.2004, 21:36 #
iframe - незаметен и удобен.
Иначе никак.
ava
sergejzr | 04.12.2004, 21:42 #
Предположим, мы хотим обновлять новости. Для этого делаем страницу с скрытым фреймом в который будет подгружаться инфа smile

<!--File: 1.html-->
<html>

<head>

<title>Автоматическое обновление</title>

<script>
function loadData()
{
// В наш скрытый фрейм подгружаем страничку с новостями
parent.podgruzka.location="./data.php";
}

function handleData()
{
// Взяли обьект с новостями на нашей страничке
var tab=document.getElementById("news");

//Зачитали новости из скрытого фрэйма
var news= parent.podgruzka.document.getElementById("news").innerHTML;

//Обновим новости и посадим таймер для последующего обновления
tab.value=news;
setTimeout("loadData()", 5000);
}
</script>

</head>

<body>
<table border="1"><tr><td>
Новости:
</td></tr><tr><td>
<!--Вот тут будут отображаться наши новости.
Естественно Это может быть что угодно
В нашем случае textarea-->
<textarea cols="100" rows="5" id="news">
на семнадцатой международной конференции в Гааге наша делегация выступила с пакетом
конструктивных предложений, направленных на углубление процесса интеграции в Европе.
выступали главы делегаций и члены правительства.
</textarea>
<td><tr></table>
<!--А вот и наш скрытый фрейм :)-->
<iframe frameborder="0" height="0" name='podgruzka' onLoad="handleData()"></iframe>



</body>

</html>


Ну нам необходим файл, который будет обновлятся на сервере.
В этом примере он называется и имеет структуру:

<!--File: data.php-->
<html><body><div id="news">а я не поехал.
я купил мотыля и пошёл на реку.
я люблю рыбалку.
сядешь на берегу, закинешь удочку -
клюёт! </div></body></html>



И так наш скрипт будет забирать через определённые промежутки инфу с сервера и выписывать на страничку smile
Для теста скопируйте 1.html и data.php в одну директорию и запустите 1.html.

Вот тест:
http://files.vingrad.ru/sergej.z/nullframe2/1.html

Скачать: 1.html
Скачать: data.php

Вуаля smile
ava
Sukhof | 04.12.2004, 21:45 #
если бы еще разобраться, да вот еще трабла, вся инфа хранится в mysql

ладно буду голову ломать, спасибо
später ergänzt:
parent.podgruzka.location="./data.php";

вот здеся он ошибку выдал говорит parent.podgruzka есть null или не является объектом
ava
sergejzr | 04.12.2004, 21:48 #
Так в чём проблема? Он же из ПХП данные забирает :)

data.php может выглядеть и так:
Внимание, код не рабочий! Лишь макет!

<!--File: data.php-->
<html><body><div id="news">
<?
//Сейчас нет возможности с ПХП и мускулом разбираться
//смысл в том, что селектируем новость из базы.
$r=mysql_select("select * from news");
print_r($r)
?>
</div></body></html>


später ergänzt:
parent.podgruzka.location="./data.php";
Цитата (Sukhof @ 4.12.2004, 20:45)
parent.podgruzka.location="./data.php";



вот здеся он ошибку выдал


1.html и data.php в одной директории лежат?
ava
Sukhof | 04.12.2004, 22:01 #
Файл 1.html я положил у соседа, а date у друга т.к. у него есть мускул, а у меня в опере скрипты заблочены, smile

да файлы лежат в одной директории,
ava
sergejzr | 04.12.2004, 22:08 #
Файлы с других хостов в ифрэйм загружать можно, но читать нельзя.

У меня же на сервере всё работает smile Посмотрите ещё раз smile Можно сразу скачать эти файлы smile
Ещё возможно, не подгрузился фрейм до конца. Попробуйте увеличить время.

Заменить
setTimeout("handleData()",100);
на
setTimeout("handleData()",1000);
ava
Sukhof | 04.12.2004, 22:10 #
ссылки битые не открываются
ava
sergejzr | 04.12.2004, 22:17 #
Ну попробую на Винград выложить :)

http://files.vingrad.ru/sergej.z/nullframe/1.php

1.html
data.php
ava
Sukhof | 04.12.2004, 22:19 #
Хе хе чето и тут не работает вплане код не работает как кажет изначально про гаагскую конференцию с расширением интеграции в Европу, так это и показывает. Т.е. я вижу что обновилось но текст тот же
ava
sergejzr | 04.12.2004, 22:21 #
Странно.. Это походу сервер чего-то не даёт... У меня с Винграда такая же история. А смоего сервера и из домашней директории всё ок...
ava
Sukhof | 04.12.2004, 22:24 #
да уж бывает но вот прикол, все работает в опере в эксплоерре не ига, а в опере где у меня скрипты залочены все ворк smile
später ergänzt:
а из локального каталога и опера не берет
ava
sergejzr | 04.12.2004, 22:33 #
Будем ждать. Может кто нить знает, где загвоздка порылась?
ошибок не выдаёт вообще никаких..
ava
sergejzr | 04.12.2004, 23:04 #
Всё в порядке smile Просто php не итерпретировался на Винграде, как я забыл smile?

Значит тогда заряжаем сразу html smile Вот наконец работающий пример:
http://files.vingrad.ru/sergej.z/nullframe2/1.html

И оба файла smile
1.html
data.html
Ребята, кто сюда случайно зайдёт, кликните по ссылочке плиз smile
ava
Sardar | 04.12.2004, 23:20 #
Зря приём данных на таймер поставил, нужно событие onLoad ловить, вдруг не у всех за секунду загрузится.
Коментируем: //setTimeout("handleData()",1000);
Изменяем: <iframe frameborder="0" height="100" name="podgruzka" onLoad="handleData()"></iframe>
ava
sergejzr | 04.12.2004, 23:23 #
Sardar Во, как хитро! smile
Если в остальном всё правильно, топик подчищу от неработающих линьков smile
später ergänzt:
Только чего-то onLoad не берёт. Он как бы перед загрузкой выполняется..
ava
Sardar | 05.12.2004, 00:46 #
Цитата (sergej @ 4.12.2004, 22:23)
Только чего-то onLoad не берёт. Он как бы перед загрузкой выполняется..

Да в первый раз, там onLoad для about:blank срабатывает.
Registrieren Sie sich oder melden Sie sich an, um schreiben zu können.
Unternehmen des Tages
Вы также можете добавить свою фирму в каталог IT-фирм, и публиковать статьи, новости, вакансии и другую информацию от имени фирмы.
Подробнее
Mitwirkende
advanced
Absenden