powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Обновление данных на страницы без перезагрузки страницы
16 сообщений из 16, страница 1 из 1
Обновление данных на страницы без перезагрузки страницы
    #38670625
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть скрипт на PHP примерно такого вида:
Код: php
1.
2.
3.
<div id="data">
<? include('result.php'); ?>
</div>


Файл result.php результатом своего выполнения выдает заполненную таблицу (TABLE).

Содержимое этой таблицы я хочу автоматически обновлять раз в минуту.
При этом делать refresh страницы раз в минуту делать бы не хотелось.

Насколько я понимаю, я могу js-скриптом запросить с сервера result.php и содержимое запроса подставить в качестве innerHTML в элемент div#data. Но я так раньше не делал, не поделитесь скелетом или примером такого решения?

________________________
Мы смотрим с оптимизмом...
...в оптический прицел.
...
Рейтинг: 0 / 0
Обновление данных на страницы без перезагрузки страницы
    #38670642
Gustly
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alibek B.,

Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
xhr = new XMLHttpRequest();
xhr.open("GET", 'result.php', true);
xhr.onreadystatechange = function() {
		if (xhr.readyState!=4) return
		if (xhr.status==200) {
			$('#my_div').html(xhr.responseText);
				}
			)
		}
	}
xhr.send(null);
...
Рейтинг: 0 / 0
Обновление данных на страницы без перезагрузки страницы
    #38670680
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А без JQuery можно?
Я сделал так:
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
...
<body onload="setTimeout(refreshSession,1000)">
...
function httpGet(url)
{
	var xmlHttp = null;
	xmlHttp = new XMLHttpRequest();
	xmlHttp.open("GET", url, false);
	xmlHttp.send(null);
	return xmlHttp.responseText;
}
function refreshSession()
{
	div = document.getElementById('session');
	if (div)
	{
		res = httpGet("/?request=session");
		if (res)
		{
			div.innerHTML = res;
		}
	}
	setTimeout(refreshSession,1000);
}


Страница обновляется два раза и перестает обновляться.
Что неправильно?
...
Рейтинг: 0 / 0
Обновление данных на страницы без перезагрузки страницы
    #38670689
Gustly
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alibek B.,

Консоль в помощь. Возможно там ошибки.
...
Рейтинг: 0 / 0
Обновление данных на страницы без перезагрузки страницы
    #38670706
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нет, оказалось что это результат просто кешировался.
Хотя в htaccess указано:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
<Files "*.php">                                                                                                                                                                              
  FileETag None                                                                                                                                                                              
  <ifModule mod_headers.c>                                                                                                                                                                   
    Header unset ETag                                                                                                                                                                        
    Header set Cache-Control "max-age=0, no-cache, no-store, must-revalidate"                                                                                                                
    Header set Pragma "no-cache"                                                                                                                                                             
    Header set Expires "Wed, 11 Jan 1984 05:00:00 GMT"                                                                                                                                       
  </ifModule>                                                                                                                                                                                
</Files>                                                                                                                                                                                     
Не посоветуете, как отключить кеширование?
Пока что временно в строку запроса добавляю рандомное число.
...
Рейтинг: 0 / 0
Обновление данных на страницы без перезагрузки страницы
    #38670743
Фотография Яростный Меч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alibek B.Пока что временно в строку запроса добавляю рандомное число.учитывая, что некоторые косячные прокси-серверы кэшируют запросы даже со всеми необходимыми заголовками - это самый надежный способ.
...
Рейтинг: 0 / 0
Обновление данных на страницы без перезагрузки страницы
    #38671219
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alibek B.Не посоветуете, как отключить кеширование?
Вместо ГЕТ-запроса используй ПОСТ. Они не кешируются...
...
Рейтинг: 0 / 0
Обновление данных на страницы без перезагрузки страницы
    #38672996
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще такой вопрос.
Нужно сделать автообновление данных на другой странице.
На странице используется много DIV, по сути при обновлении нужно будет получать с сервера процентов 90% от объема страницы.
Делать рефреш страницы не хочу, чтобы сохранить текущую позицию и открытые вкладки (вкладки это набор DIV, один из которых отображается, другие скрываются).
Если я буду запрашивать с сервера самого себя (свой URL), парсить ответ как XML и обновлять текущую страницу, могут быть какие-то неожиданности?
...
Рейтинг: 0 / 0
Обновление данных на страницы без перезагрузки страницы
    #38673042
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alibek B.Еще такой вопрос.
Нужно сделать автообновление данных на другой странице.
На странице используется много DIV, по сути при обновлении нужно будет получать с сервера процентов 90% от объема страницы.
Делать рефреш страницы не хочу, чтобы сохранить текущую позицию и открытые вкладки (вкладки это набор DIV, один из которых отображается, другие скрываются).
Если я буду запрашивать с сервера самого себя (свой URL), парсить ответ как XML и обновлять текущую страницу, могут быть какие-то неожиданности?
Не знаю будут ли проблемы (скорее всего будут, так как парсинг - дело неблагодарное), но то что эта структура в корне неправильная - это точно.

Каждый запрос должен взять свою порцию данных (если это данные некого товара, то все данные товара... если это календарь праздников, то должен взять все данные за месяц/год и т.д.). Но неправильно брать излишние данные, а потом сложными манипуляциями выделять из них нужные.
...
Рейтинг: 0 / 0
Обновление данных на страницы без перезагрузки страницы
    #38673086
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Страницу я формирую сам, она XHTML-валидная, поэтому проблем с парсингом я не ожидаю.
У меня нет какой-то небольшой порции данных, фактически мне нужно обновить все содержимое страницы, но сохранить при этом текущее состояние страницы (отображаемые DIV, позицию скроллбара и т.п.).
...
Рейтинг: 0 / 0
Обновление данных на страницы без перезагрузки страницы
    #38673173
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alibek B.Страницу я формирую сам, она XHTML-валидная, поэтому проблем с парсингом я не ожидаю.
У меня нет какой-то небольшой порции данных, фактически мне нужно обновить все содержимое страницы, но сохранить при этом текущее состояние страницы (отображаемые DIV, позицию скроллбара и т.п.).

Как по мне - это лишняя нагрузка :) Но тебе виднее... Насчёт скролла - не уверен что он сохранит свою позицию при замене контента :) Это стоило бы проверить.
...
Рейтинг: 0 / 0
Обновление данных на страницы без перезагрузки страницы
    #38673407
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще такой вопрос.
А можно ли из полученного ответа (содержимое страницы) малой кровью получить DOM?
Фактически мне нужно будет выполнить doc.getElementById('fld').innerHTML = data.getElementById('fld').innerHTML, где doc это текущий документ, а data — это загруженный документ.
Но в XML метода getElementById нет, а XPath-запросы мне применить не удалось.
...
Рейтинг: 0 / 0
Обновление данных на страницы без перезагрузки страницы
    #38673488
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нашел такой код на W3C:
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
if (window.DOMParser)
   {
   parser=new DOMParser();
   xmlDoc=parser.parseFromString(text,"text/xml");
   }
 else // code for IE
   {
   xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
   xmlDoc.async=false;
   xmlDoc.loadXML(text); 
   }  


Но он у меня почему-то выдает ошибку на parser.parseFromString.
...
Рейтинг: 0 / 0
Обновление данных на страницы без перезагрузки страницы
    #38673495
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alibek B.Нашел такой код на W3C:
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
if (window.DOMParser)
   {
   parser=new DOMParser();
   xmlDoc=parser.parseFromString(text,"text/xml");
   }
 else // code for IE
   {
   xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
   xmlDoc.async=false;
   xmlDoc.loadXML(text); 
   }  


Но он у меня почему-то выдает ошибку на parser.parseFromString.

так может text/html надо, а не xml? :) А то ведь html отвечает не всем правилам xml. Он является модифицированным и менее требовательным.
...
Рейтинг: 0 / 0
Обновление данных на страницы без перезагрузки страницы
    #38673505
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот рабочая версия:
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
function refreshPage()
{
	res = httpGet("status.php");
	if (res)
	{
		parser = new DOMParser();
		doc = parser.parseFromString(res, "text/html");
		if (doc)
		{
			ids = ["timestamp","station","ap"];
			while (id = ids.pop())
			{
				document.getElementById(id).innerHTML = doc.getElementById(id).innerHTML;
			}
		}
	}
	setTimeout(refreshPage,60000);
	return true;
...
Рейтинг: 0 / 0
Обновление данных на страницы без перезагрузки страницы
    #38673778
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alibek B.,

Не стоит засорять глобальную область видимости. Перед оглавлением переменных стоит писать var что бы сделать их локальными. Иначе потом возможны траблы.
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Обновление данных на страницы без перезагрузки страницы
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]