Javascript.RU

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

Как запустить скрипт без перезагрузки окна?
Добрый день. Пишу сайт на 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>
Ответить с цитированием
  #2 (permalink)  
Старый 11.06.2020, 18:00
Новичок на форуме
Отправить личное сообщение для Vifh Посмотреть профиль Найти все сообщения от Vifh
 
Регистрация: 11.06.2020
Сообщений: 4

Спасибо за ответ! Когда я готовил код к публикации здесь, то удалял "мусор", переставлял что-то для упрощения и неправильно вставил строку 13. Виноват...
Вот так выглядит оригинальный код:

function drawChart() {
			...
			var chart = new google.visualization.LineChart(document.getElementById('fh_chart'));
			chart.draw(data, options);
		  }


В начале скрипта есть alert(), я его специально привел. Он срабатывает именно после перезагрузки окна и графики все правильно рисуются. Сам скрипт не могу запустить при первой загрузке.
Ответить с цитированием
  #3 (permalink)  
Старый 11.06.2020, 18:17
Новичок на форуме
Отправить личное сообщение для Vifh Посмотреть профиль Найти все сообщения от Vifh
 
Регистрация: 11.06.2020
Сообщений: 4

Вот что в консоли после появления страницы после вызова ее из меню на предыдущей странице:

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() и графики появляются

Последний раз редактировалось Vifh, 11.06.2020 в 18:20.
Ответить с цитированием
  #4 (permalink)  
Старый 11.06.2020, 19:47
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,795

Сообщение от Vifh
Страница появляется, но графики не появлются. Но если же сделать рефреш таблицы в браузере, то графики уже появлются
Переход со страницы на страницу происходит асинхронно?

Скорее всего у вас либо ресурсы не подгружаются, либо callback-функция не вызывается.
Ответить с цитированием
  #5 (permalink)  
Старый 13.06.2020, 18:57
Новичок на форуме
Отправить личное сообщение для Vifh Посмотреть профиль Найти все сообщения от Vifh
 
Регистрация: 11.06.2020
Сообщений: 4

Сообщение от Rise Посмотреть сообщение
Опять же, куда-то привел, но не сюда, иди проспись.
"Профессор" Rise, Кто тебе дал право так со мной разговаривать? Куда-куда это мне идти??? Это же грубое нарушение правил участия в форуме, про твою этику я уже не говорю. Впрочем, плевать тебе на это. Я, кстати, в переписке к тебе на ВЫ обращался!
Называется - нашел помощь на форуме...
Ну и ладно.

Nexus, - спасибо за ответ. Вы правы - дело в callback, я понимал это сразу. Просто, задачка у меня совсем небольшая была - показать на странице некоторые данные для своих личных целей. Хватало азов HTML и JS. Я разберусь. Спасибо Вам!
Ответить с цитированием
  #6 (permalink)  
Старый 15.06.2020, 12:09
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от Rise
Врёт и не краснеет
Зато как "заиграла" после баталий тема - читается сразу то, что подчеркнуто, кусочек заголовка и последний комментатор - Как запустить скрипт без ... Rise.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как реализовать скрипт pop under окна на java? Alex_Z Общие вопросы Javascript 0 07.11.2019 14:22
событье onclick как вызвать без клика и без подозрений... Александр_1997 Events/DOM/Window 0 21.06.2014 17:38
Как вы относитесь к наркоманам? Maxmaxmaximus7 Оффтопик 7 05.02.2014 13:29
Подскажите, как сделать правильно отрисовку без перезагрузки всей страницы yiooxir Angular.js 1 24.12.2013 18:30
Как можно сделать подгрузку и смену изображения без перезагрузки страницы с другого Евгений Болгов jQuery 11 21.10.2010 18:18