Проблема с jQuery: "TypeError: $.getJSON не является функцией"
У меня есть следующий кусок кода:
$(document).ready(function () {
$.getJSON('http://localhost:5000/', function (response) {
console.log(response);
});
});
localhost:5000
— это скрипт на Flask/Python, который возвращает JSON в следующем формате:
{
"data": [
0,
0,
0,
Но я получаю ошибку:
$.getJSON is not a function TypeError: $.getJSON is not a function
Не могли бы вы подсказать, с чего начать разбираться в данной проблеме?
Спасибо!
Правка:
HTML-код:
<!DOCTYPE html>
<html>
<head>
<script src="https://code.jquery.com/jquery-3.1.1.slim.min.js"></script>
<script src="lib/main.js"></script>
</head>
<body>
</body>
</html>
Файл lib/main.js
— это то место, где находится document.ready
.
Спасибо!
5 ответ(ов)
Похоже, вы используете "тонкую" версию jQuery, которая не включает метод getJSON
, из-за чего вы получаете эту ошибку.
Пожалуйста, используйте полную версию jQuery, доступную по следующей ссылке:
https://code.jquery.com/jquery-3.1.1.min.js
"Тонкая" версия jQuery исключает такие функции, как AJAX, анимационные эффекты и другие.
Это происходит довольно часто при миграции кодовой базы с jQuery версии 1.x+ на 3.0+, так как jQuery обновил, устарел или прекратил поддержку некоторых своих API.
Я рекомендую использовать jQuery Migrate, который поможет решить эту проблему, а также другие вопросы.
Вы можете получить его через CDN:
https://cdnjs.com/libraries/jquery-migrate
Если вы используете Gulp/Grunt, вы можете импортировать его в свой проект, выполнив команду:
npm install --save jquery jquery-migrate
Репозиторий на GitHub - https://github.com/jquery/jquery-migrate
Дополнительную информацию о jQuery версии 3.0+ можно прочитать здесь: http://blog.jquery.com/2016/06/09/jquery-3-0-final-released/
В вашем коде функция cinta
выполняет AJAX-запрос к локальному серверу на http://localhost:5000/
, используя библиотеку jQuery. Когда ответ получен, он выводится в консоль. Кроме того, при загрузке документа вы выводите 'yesss' в консоль.
Если ваш сервер написан с использованием Flask на Python и все настроено правильно, то этот код должен работать. Убедитесь, что ваш Flask-приложение запущено на порту 5000 и отвечает на запросы по указанному URL.
Вот несколько вещей, которые стоит проверить, если у вас возникают проблемы:
Сервер работает? Убедитесь, что Flask-приложение действительно запущено и доступно по адресу
http://localhost:5000/
.CORS (Cross-Origin Resource Sharing): Если ваш сервер и клиент находятся на разных доменах (например, как в случае с использованием
localhost
и порта), проверьте, не блокирует ли CORS ваши запросы.Ошибки в консоли: Проверьте вкладку "Консоль" в инструментах разработчика браузера на наличие ошибок. Это может помочь понять, происходит ли какой-либо сбой.
Формат ответа: Убедитесь, что сервер возвращает корректный JSON-ответ, ожидаемый вашим кодом.
Если всё настроено правильно и ошибок нет, ваш код должен корректно получать данные с сервера и отображать их в консоли.
У меня была такая же ошибка в моем коде:
$.getJson("/foo.json")
Проблема заключалась в том, что моя функция на самом деле называется
$.getJSON
А не $.getJson
. Убедитесь, что используете правильный регистр!
Пожалуйста, используйте полную версию jQuery CDN вместо версии Slim/lite. Slim-версия не включает в себя такие функции, как AJAX и эффекты. Вот пример подключения полной версии:
<script src="https://code.jquery.com/jquery-3.1.1.min.js"></script>
Обратите внимание, что в данном примере не используются параметры cross-origin
и integrity
. Это должно работать, если вы просто хотите подключить jQuery без дополнительных настроек.
Как перенаправить на другую веб-страницу?
Прокрутка к элементу с использованием jQuery
Как определить нажатие клавиши Esc?
Как получить данные формы с помощью JavaScript/jQuery?
Как выполнить код после сброса HTML-формы с помощью jQuery?