|
|
|
| У мнея на ПХП страничке, каждые 10 секунд должен обнавляться счётчик посетителей ОН-ЛАЙН. Но дело в том, что он обновляется, но после первого запуска только. Такое ощущение будто он один раз обработал ПХП скрипт и потом постоянно использует только одно и тоже число. Т.е если зайти на страничку с таким кодом, то счётчик покажет сколько он-лайн, но в дальнейшем будет обновляться на одно и тоже кол-во людей он-лайн. Почему так? Что делать?
INDEX.PHP
<html>
<head>
<script>
function myFunc ()
{
document.getElementById ("online").innerHTML ='<?php include"online.php";?>';
}
</script>
</head>
<body bgcolor="#ffffff" onload="setInterval(myFunc(),10000)">
<table>
<tr>
<td ID="kletka"> </td>
</tr>
</table>
</body>
</html>
|
| |
|
|
|
|
|
|
|
для: blackcement
(07.04.2009 в 12:48)
| | всё просто: в джаваскрипт жостко прописывается первое значение из <?php include"online.php";?>, которое потом всё время и подставляется :)
Выход — послыать раз в 10 секунд аякс запрос к online.php | |
|
|
|
|
|
|
|
для: Lelik
(07.04.2009 в 13:04)
| | Что-то не понял.... Объясни пожалуйста... | |
|
|
|
|
|
|
|
для: blackcement
(07.04.2009 в 13:23)
| | если упростить до объянения на пальцах, то твой код после построения страницы приобретает такой вид:
<script>
function myFunc ()
{
document.getElementById ("online").innerHTML ='10';//например, в момент построения страницы было 10 человек на сайте
}
</script>
|
и каждое обращение к этой функции и будет присваювать блоку online значение, то которое прописано в коде, в примере это — 10. Другими словами джаваскрипт не дергает постоянно файл online.php, а использует данные которые есть в функци. Для того, что бы он, вместо обращения к прописаному в коде значению, начал обращаться к файлу online.php необходимо использовать АЯКС. | |
|
|
|
|
|
|
|
для: Lelik
(07.04.2009 в 13:36)
| | Это я всё понял, я просто не врубился что такое АЯКС, а теперь ясно - это AJAX. А как им обращаться в этом примере к ПХП скрипту? Я тут нашёл одну книжку в интернете, но что-то не понял ничего. Дайте какой-нибудь пример.
Вот нашёл некоторое
load( url, [data], [callback] )
jQuery.get( url, [data], [callback] )
если это то, то как использовать | |
|
|
|
|
|
|
|
|
для: Lelik
(07.04.2009 в 15:27)
| | Я так понимаю?
document.getElementById ("online").innerHTML = XMLHttpRequest.responseText( '<?php include"online.php";?>' );
|
Дак у меня и страница должна быть XML или нет? | |
|
|
|
|
|
|
|
для: blackcement
(07.04.2009 в 15:41)
| | Объясните пожалуйста, какой это доджен быть запрос и запрос чего? (то что Ajax запрос скрипта, я понимаю, но ведь там ещё POST , GET кудато примкнуть надо, возврат какой-то) | |
|
|
|
|
|
|
|
для: blackcement
(07.04.2009 в 12:48)
| | >Такое ощущение будто он один раз обработал ПХП скрипт и потом постоянно использует только одно и тоже число.
У вас ПРАВИЛЬНОЕ ощущение.
PHP-скрипт действительно обрабатывает ОДИН раз и результат своей работы отдаёт браузеру.
И отдаёт его в виде ТЕКСТА HTML-кода. И на этом PHP свои функции ИСЧЕРПЫВАЕТ.
А в браузере формируются СВОИ переменные.
Если у вас поменялось значение какой-то JS-переменной, то причём тут PHP-скрипт?
Постарайтесь понять, что HTML-страницы бывают ДВУХ видов (по отношению к СЕРВЕРУ):
1. СТАТИЧЕСКАЯ, т.е. загружаемая на сервер в виде только HTML-кода и JS-скриптов. Эта страница отдаётся браузеру в том виде, в котором была изначально загружена на сервер. Аналогия: браузер получает на обед купленные в магазине пельмени.
2. ФОРМИРУЕМАЯ НА СЕРВЕРЕ, т.е. загружаемая на сервер не только в виде HTML-кода, но и с наличием включений какого-нить серверного языка. Сервер ПЕРЕД отдачей браузеру ФОРМИРУЕТ эту страницу и отдаёт её браузеру точно в таком же виде, как и СТАТИЧЕСКАЯ (т.е. браузер получает только HTML-код и JS-скрипты). Аналогия - браузер получает на обед тоже пельмени, но сделанные вами лично.
Спрашивается: КАКАЯ РАЗНИЦА для браузера?
Отвечаю: НИКАКОЙ РАЗНИЦЫ. Пельмени - они пельмени и есть. | |
|
|
|