Показать сообщение отдельно
  #1 (permalink)  
Старый 30.01.2015, 15:07
Новичок на форуме
Отправить личное сообщение для Asondo Посмотреть профиль Найти все сообщения от Asondo
 
Регистрация: 30.01.2015
Сообщений: 1

Подгрузка графиков jqplot в div на ajax. Не рисует график
Привет!

У меня тут проблема, которая скорее всего уже решалась, но она решалась на уровне jQuery, а у меня немного другой уровень абстракции. История такая:

Есть index.php и есть graphics/calls.php

На первой страничке есть div, в который я подгружаю содержимое graphics/calls.php так:
var xhrCalls = new XMLHttpRequest();						// Создаем запрос графика по звонкам
		xhrCalls.open('POST', '/a/graphics/calls.php', true);
		xhrCalls.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
		xhrCalls.onreadystatechange = function() {  			// Когда пришел ответ
			if (xhrCalls.readyState != 4) return;
			if (xhrCalls.status==200) {												// Поднимаем флаг: графики загружены
				graphicStatus=1;	
				calls.innerHTML = xhrCalls.responseText;  		// Отправляем страничку в div
				var arr = calls.getElementsByTagName('script'); // Выделяем все скрипты внутри div id='calls'
				for (n=0; n<arr.length; n++) {
					eval(arr[n].innerHTML); // Запускаем все скрипты
				}
				test(); // alert("ВСЕ РАБОТАТЬ ДОЛЖНО!");
				draw(); // Рисование графика
			} 
		}				
		xhrCalls.send(post); 													// Отправляем запрос


Без подгрузки graphics/calls.php прекрасно работает и рисует графики. Функция test, которая выводит алерт тоже работает. А вот функция draw, которая использует jQuery библиотеку jqPlot ничего не делает. Отсюда есть у меня подозрение, что это связано с какими-то jQuery заморочками. Сам я пользуюсь только нативным JS и в jQuery не бум бум, пришлось использовать только графиков ради. Вот функция рисования:
<script class="code" type="text/javascript" language="javascript"> 
	<?php
		foreach($managers as $k => $manager) { // Создаем по массиву данных на каждого менеджера
			echo("var manager$k=["); // Создаем массив данных для текущего менеджера
			echo($manager['calls']);
			echo("];");
		}
		echo ("var complex=[");  // Отправляем все в один массив
		foreach($managers as $k => $manager) {
			if ((int)$manager['phone_code']>100) {	
				echo ("manager$k,");
			}
		}
		echo ("];");
		
		foreach($managers as $k => $manager) {
			if ((int)$manager['phone_code']>100) {	
				$names=$names."{label: '".$manager['name']."'},";
			}
		}
	?>			
	function draw() {
		var plot1 = $.jqplot('chart1', complex, {
			title:'Звонки за последние 30 дней',
			legend: {
				renderer: $.jqplot.EnhancedLegendRenderer,
				show: true,
				placement: 'outsideGrid',
				location: 's',
				rendererOptions: {numberColumns: 6, numberRows: 0}
			},
			axes:{
				xaxis:{
					renderer:$.jqplot.DateAxisRenderer,
					tickOptions:{formatString:'%d.%m'},
					tickInterval:'1 day'
				},
				yaxis:{
					pad: 0.4,
				}
			},
			seriesDefaults: {
				rendererOptions: {
					smooth: true,
				},
				showMarker: true,
			},
			series:[
				<?php
					echo($names);
				?>
			]
		});		
	};
</script>


Все скрипты, либы и прочее подгружается на нужную страницу. Кто-нибудь сталкивался с подобными проблемами? Как это вообще можно решить?

Буду весьма благодарен за помощь!
Ответить с цитированием