Как запустить скрипт без перезагрузки окна?
Добрый день. Пишу сайт на Django фрэймворке Python. Спецы по этим продуктам рекомендуют обратиться к вам - спецам по JS с моей проблемой.
На странице строятся графики с помощью Google Charts. Отладка идет на web-сервере Django. Если вызвать страницу с графиком по адресу http://127.0.0.1/charts то генерация графиков на странице происходит нормально, правильно. Но сделал вызов этой страницы с графиками с другой страницы через меню. Страница появляется, но графики не появлются. Но если же сделать рефреш таблицы в браузере, то графики уже появлются - все отрабатывает. Скрипт, в котором находится function drawChart(), не отрабатывает при вызове страницы с другой страницы, но отрабатывается после рефреша страницы. Очень прошу помочь. Код генерируемой HTML-страницы:
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript" src="//www.gstatic.com/charts/loader.js"></script>
<script type="text/javascript">
google.charts.load('current', {'packages':['corechart']});
google.charts.setOnLoadCallback(drawChart);
function drawChart() {
...
}
var chart = new google.visualization.LineChart(document.getElementById('fh_chart'));
</script>
</head>
<body>
<div class="menu">
<a href="/">Главная</a>
<a href="/charts/">Температура</a>
</div>
<div id="fh_chart" style="width: 900px; height: 500px"></div>
</div>
</body>
</html>
|
Спасибо за ответ! Когда я готовил код к публикации здесь, то удалял "мусор", переставлял что-то для упрощения и неправильно вставил строку 13. Виноват...
Вот так выглядит оригинальный код:
function drawChart() {
...
var chart = new google.visualization.LineChart(document.getElementById('fh_chart'));
chart.draw(data, options);
}
В начале скрипта есть alert(), я его специально привел. Он срабатывает именно после перезагрузки окна и графики все правильно рисуются. Сам скрипт не могу запустить при первой загрузке. |
Вот что в консоли после появления страницы после вызова ее из меню на предыдущей странице:
XHR finished loading: GET "http://127.0.0.1:8000/charts/". send @ VM23 jquery-latest.js:9631 ajax @ VM23 jquery-latest.js:9176 a.mobile.loadPage @ VM24 jquery.mobile-1.3.2.min.js:3 a.mobile.changePage @ VM24 jquery.mobile-1.3.2.min.js:3 (anonymous) @ VM24 jquery.mobile-1.3.2.min.js:3 dispatch @ VM23 jquery-latest.js:4641 elemData.handle @ VM23 jquery-latest.js:4309[/i] Эти библиотеки я запрашиваю. А потом после рефреша этой же страницы: Navigated to http://127.0.0.1:8000/charts/ И со второго раза отрабатывает скрипт который содержит function drawChart() и графики появляются |
Цитата:
Скорее всего у вас либо ресурсы не подгружаются, либо callback-функция не вызывается. |
Цитата:
Называется - нашел помощь на форуме... Ну и ладно. Nexus, - спасибо за ответ. Вы правы - дело в callback, я понимал это сразу. Просто, задачка у меня совсем небольшая была - показать на странице некоторые данные для своих личных целей. Хватало азов HTML и JS. Я разберусь. Спасибо Вам! |
Цитата:
|
| Часовой пояс GMT +3, время: 01:09. |