Привет!
У меня тут проблема, которая скорее всего уже решалась, но она решалась на уровне 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>
Все скрипты, либы и прочее подгружается на нужную страницу. Кто-нибудь сталкивался с подобными проблемами? Как это вообще можно решить?
Буду весьма благодарен за помощь!