Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 24.07.2009, 16:03
Новичок на форуме
Отправить личное сообщение для yupa Посмотреть профиль Найти все сообщения от yupa
 
Регистрация: 09.06.2009
Сообщений: 4

передача данных из xml в html
Здравствуйте, подскажите как собрать все в рабочую конструкцию.

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

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
    <title>jQuery Sparklines Simple Example</title>
    <meta http-equiv="content-type" content="text/html; charset=windows-1251"/>
    <script type="text/javascript" src="jquery_sparkline/jquery-1.3.2.min.js"></script>
    <script type="text/javascript" src="jquery_sparkline/jquery.sparkline.js"></script>

    <script type="text/javascript">
    $(function() {
			$('.bullet').sparkline( 'html', { type:'bullet',
            targetColor : 'red',
            targetWidth : 3, 
            performanceColor : 'blue',
            rangeColors : ['#FFCC99', '#FFFFFF', '#CCCCFF' ],
			width:'100px',
			height: '15px',
            });
    });

    </script>
</head>
<body>



<table width="1000" align="center" border="0">
  <tr>
    <td width="200" height="250">
<center> Птичник1 </center>
<table>
  <tr>
    <td>
		<table heigt="">
		      <tr>
			      <td>39</td>
			      <td name="cell"><span class="bullet">39,50,50,35,15</span></td>
			  </tr>
			  <tr>
			      <td>39</td>
			      <td><span class="bullet">39,50,50,35,15</span></td>
			  </tr>
			  <tr>
			      <td>39</td>
			      <td><span class="bullet">39,50,50,35,15</span></td>
			  </tr>
		</table>
	</td>
    <td><p style="font-size:20px;">39.0</p></td>
  </tr>
</table>


<table>
  <tr>
    <td>
		<table heigt="80">
		      <tr>
			      <td>39</td>
			      <td><span class="bullet">39,50,50,35,15</span></td>
			  </tr>
			  <tr>
			      <td>39</td>
			      <td><span class="bullet">39,50,50,35,15</span></td>
			  </tr>
			  <tr>
			      <td>39</td>
			      <td><span class="bullet">39,50,50,35,15</span></td>
			  </tr>
		</table>
	</td>
    <td><p style="font-size:20px;">39.0</p></td>
  </tr>
</table>



<table>
  <tr>
    <td>
		<table heigt="80">
		      <tr>
			      <td>39</td>
			      <td><span class="bullet">39,50,50,35,15</span></td>
			  </tr>
			  <tr>
			      <td>39</td>
			      <td><span class="bullet">39,50,50,35,15</span></td>
			  </tr>
			  <tr>
			      <td>39</td>
			      <td><span class="bullet">39,50,50,35,15</span></td>
			  </tr>
		</table>
	</td>
    <td><p style="font-size:20px;">39.0</p></td>
  </tr>
</table>
	</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
  </tr>
  <tr>
   	<td>
	</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
  </tr>
</table>

</body>
</html>


нужно что бы каждые 30 секунд подтягивались даныые (которые нужно вставлять в html из xml файла)

вот нашел примеры ф-ии
<script type= "text/javascript">
var req;
var reqTimeout;

reloadData();
<!--ADD_DHTML(CURSOR_MOVE, RESIZABLE, NO_ALT, SCROLL, "tabdiv");-->
setInterval(reloadData,60000);

function loadXMLData(url) {
    req = null;
    if (window.XMLHttpRequest) {
        try {
	    req = new XMLHttpRequest();
        } catch (e){}
    } else if (window.ActiveXObject) {
        try {
            req = new ActiveXObject('Msxml2.XMLHTTP');
        } catch (e){
            try {
		req = new ActiveXObject('Microsoft.XMLHTTP');
	    } catch (e){}
	}
    }
    if (req) {
        req.onreadystatechange = processReqChange;
        req.open("GET", url, true);
        req.send(null);
        reqTimeout = setTimeout("req.abort();", 5000);
    } else {
        alert("Браузер не поддерживает AJAX");
    }
}

function reloadData() {
    loadXMLData('curTable.php');
}

function processReqChange() {
    if (req.readyState == 4) {
	do***ent.getElementById('tabdiv').innerHTML = req.responseText;
    }
}

</script>


но к сожалению не могу переделать под себя (с Ajax первое знакомство)
Подскажите, пожалуйста, как должен выглядеть содержимое xml файла с которого будут выводиться данные и что нужно изменить processReqChange(), reloadData(), loadXMLData() ?

Заранее благодарен!
Ответить с цитированием
  #2 (permalink)  
Старый 24.07.2009, 16:15
Аватар для Riim
Рассеянный профессор
Отправить личное сообщение для Riim Посмотреть профиль Найти все сообщения от Riim
 
Регистрация: 06.04.2009
Сообщений: 2,379

Сообщение от yupa
вот нашел примеры ф-ии
В Jquery все есть. Определитесь на чистом javascript-е или на Jquery вы пишите.
Ответить с цитированием
  #3 (permalink)  
Старый 24.07.2009, 16:50
Новичок на форуме
Отправить личное сообщение для yupa Посмотреть профиль Найти все сообщения от yupa
 
Регистрация: 09.06.2009
Сообщений: 4

не принципиально, но на Jquery было бы оптимальнее, но готовые решения не попадались в руки(
Ответить с цитированием
  #4 (permalink)  
Старый 24.07.2009, 16:53
Аватар для Riim
Рассеянный профессор
Отправить личное сообщение для Riim Посмотреть профиль Найти все сообщения от Riim
 
Регистрация: 06.04.2009
Сообщений: 2,379

http://docs.jquery.com/Ajax
Ответить с цитированием
  #5 (permalink)  
Старый 24.07.2009, 17:52
Новичок на форуме
Отправить личное сообщение для yupa Посмотреть профиль Найти все сообщения от yupa
 
Регистрация: 09.06.2009
Сообщений: 4

а какой-то наглядный пример?
Ответить с цитированием
  #6 (permalink)  
Старый 27.07.2009, 08:56
Аспирант
Отправить личное сообщение для JSTalker Посмотреть профиль Найти все сообщения от JSTalker
 
Регистрация: 29.06.2009
Сообщений: 92

Здравствуйте!

Почему

var req=null;
...
var data = req.getElementsByTagName('response')[0];


эксплорер пишет - не поддерживается св-во или метод?

хотя в книге Googman "JavaScript_and_DHTML_Cookbook" такое обращение используется.

req создается классически:

req = initXMLHTTPRequest();
...
function initXMLHTTPRequest(){
	var xRequest = null;
	// Инициализация объекта запроса
	if (window.XMLHttpRequest) 
	{
		xRequest = new XMLHttpRequest();
	}
	else 
		if (window.ActiveXObject) {
			xRequest = new ActiveXObject("Microsoft.XMLHTTP");
		}
	return xRequest;
}


xml-файл имеет примерно след.структуру

<response>
	<yahoo>
		<google> data</google >
		<yandex>value</yandex >
		<mail>true</mail>
	</yahoo >
</response>


Решаю подобную задачу: внедрение данных из файла XML(с собственной разметкой и тегами) в таблицу с ячейками с id.
Применяю классическую (вышеописанную) схему: Определение среды/создание объекта XmlRequest, настройка запросчика(req) на события (onReadyState), и собсно внедрение данных.
P.s. Как лучше всего именовать id ячеек таблицы, чтобы проше было обходить в функции, но при этом не терялась уникальность поля, если страниц с такой таблицей много.
P.p.s. Как правильней всего осуществить разбор xml-файла с трехуровневой структурой?

Спасибо!

Последний раз редактировалось JSTalker, 27.07.2009 в 09:11.
Ответить с цитированием
  #7 (permalink)  
Старый 27.07.2009, 09:31
Аватар для B~Vladi
Модератор Всея Форума
Отправить личное сообщение для B~Vladi Посмотреть профиль Найти все сообщения от B~Vladi
 
Регистрация: 14.05.2009
Сообщений: 4,021

Сообщение от JSTalker
Как лучше всего именовать id ячеек таблицы, чтобы проше было обходить в функции, но при этом не терялась уникальность поля, если страниц с такой таблицей много.
Оставьте id в покое. Обходить таблицу можно и DOM-функциями.
Сообщение от JSTalker
Как правильней всего осуществить разбор xml-файла с трехуровневой структурой?
Какая ещё трёхуровневая структура?!
Свой response вы можете получить так:
var data = req.documentElement;
Ответить с цитированием
  #8 (permalink)  
Старый 27.07.2009, 09:52
Аспирант
Отправить личное сообщение для JSTalker Посмотреть профиль Найти все сообщения от JSTalker
 
Регистрация: 29.06.2009
Сообщений: 92

Спасибо за ответ!
Сообщение от B~Vladi Посмотреть сообщение
Какая ещё трёхуровневая структура?!
приведенная выше, имелась ввиду.)
Цитата:
Свой response вы можете получить так:
var data = req.documentElement;
ок. здесь ошибку не выдает! теперь мне надо добраться до значения в теге <google>data</google>. Я использую
var oneRecord = data.childNodes[0];
	tcell = document.getElementById('tabledata'); //таблица куда внедряю данные
	tcell.value=oneRecord.getElementsByTagName('yahoo').firstChild.nodeValue;


На первой же строчке пишет "childNodes=null или не является объектом"..
Хотя Гудман, в книге рецептов, опять же применяет этот метод доступа к дочерним тэгам.. Вообще я могу обращаться общими JS-методами, к собственнонаписанному xml-файлу?
Ответить с цитированием
  #9 (permalink)  
Старый 27.07.2009, 10:13
Аватар для B~Vladi
Модератор Всея Форума
Отправить личное сообщение для B~Vladi Посмотреть профиль Найти все сообщения от B~Vladi
 
Регистрация: 14.05.2009
Сообщений: 4,021

Зачем в теге yahoo другие поисковики?!

Яху попробуйте получить так:
var oneRecord = data.firstChild;


Странно, конечно, что выдаёт ошибку... Возможно XML невалидный. Для точности нужно использовать такую конструкцию:
if(!xml) alert('')//Невалидный
else if(!xml.documentElement) alert('')//Невалидный
else if(xml.documentElement.tagName=='parsererror') alert('')//Невалидный
else // Валидный
Ответить с цитированием
  #10 (permalink)  
Старый 27.07.2009, 10:18
Аватар для B~Vladi
Модератор Всея Форума
Отправить личное сообщение для B~Vladi Посмотреть профиль Найти все сообщения от B~Vladi
 
Регистрация: 14.05.2009
Сообщений: 4,021

Ещё ошибка тут:
Сообщение от JSTalker
tcell.value=oneRecord.getElementsByTagName('yahoo').firstChild.nodeValue;
Будте внимательнее.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Передача данных в другое окно fisenich Общие вопросы Javascript 6 10.03.2023 01:17
FancyBox или передача данных greatilya Общие вопросы Javascript 12 28.01.2014 23:38
Передача и сохранение данных в фаил RX200 Общие вопросы Javascript 7 28.02.2009 14:00
Передача данных в скрипт Votved Общие вопросы Javascript 2 07.07.2008 18:30
передача данных между формами Yurii Общие вопросы Javascript 2 30.04.2008 20:52