jquery не хочет работать, после получения html после python через Flask
Структура такая. Пользователь нажимает кнопку сгенерировать таблицу. Это команда передается через Flask в python. Тот в свою очередь смотрит на кучу серверов собирает инфу + так же собирает sql данные. Затем их сравнивает. И на основании всего этого формирует таблицу. Питон файл выплевывает html страницу готовую (сохраняя ее как файл). Flask возвращает эту страницу через render_template.
Визуально все хорошо. Но вот, если пользователь хочет взаимодействовать с таблицей посредством js.
Видим ошибку:
main.js:1 Uncaught ReferenceError: $ is not defined
at main.js:1:1
Это из шапки сформированной таблицы.
<script defer="" src="static/js/jquery-3.6.0.js"></script>
<script src="static/js/main.js"></script>
<link rel="stylesheet" href="static/css/style_for_main.css">
Опытным путем, если страницу просто сохранить и корячить ее отдельно js работает. Помогите, пожалуйста)))
Ответы (1 шт):
<script defer="" src="static/js/jquery-3.6.0.js"></script>
^^^^^
<script src="static/js/main.js"></script>
Проблема в том, что в строке подключения библиотеки jQuery у вас стоит атрибут defer. А в тех строках, где jQuery используется, этот атрибут не стоит.
В результате попытка использования библиотеки jQuery происходит раньше её подключения, отсюда и такая ошибка.
Само по себе использование атрибута defer - это не проблема и в некоторых гайдах это даже рекомендуется, чтобы страница быстрее грузилась и показывалась, а скрипты уже потом отрабатывали. Но в случае загрузки библиотеки jQuery с атрибутом defer таким же атрибутом defer должны быть снабжены все вызовы jQuery на странице и, кроме того, подключение библиотеки должно идти раньше её использования. Тогда подключение и использование jQuery будет произведено правильным образом.
P.S. И вообще тут странное что-то у вас, атрибуту defer не нужно ничего присваивать, он используется сам по себе.