Вопрос:
Я использую JQuery для получения json-объекта с сервера solr. Когда я запускаю свой html файл с Tomcat, он отлично работает, но когда я вставляю его в свой проект, который работает в weblogic, он получает эту ошибку: (отладка выполняется через firebug)
$ is not defined $(document).ready(function(){
Почему я получаю эту ошибку, когда я вставляю ее в свой проект?
Это содержимое моего тега <head>. Вот как я включаю jquery.js:
<head> <title>Search Result </title> <style> img{ height: 150px; float: left; border: 3;} div{font-size:10pt; margin-right:150px; margin-left:150px; } </style> <script type=»text/javascript» src=»jquery-1.6.1.js»></script> <script type=»text/javascript»> $(document).ready(function(){ //Error happens here, $ is not defined. }); </script> </head> Лучший ответ:
Вы загрузили jQuery в разделе head? Вы правильно загрузили его?
<head> <script src=»scripts/jquery.js»></script> … </head>
Этот код предполагает, что jquery.js находится в каталоге scripts. (Вы можете изменить имя файла, если хотите)
Вы также можете использовать jQuery размещенный Google:
<head> <script src=»https://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js»></script> … </head>
Согласно вашему комментарию:
По-видимому, ваш веб-сервер не настроен на возврат jQuery-1.6.1.js при запросе /webProject/jquery-1.6.1.js. Для этого может быть множество причин, таких как неправильное имя файла, имя папки, параметры маршрутизации и т.д. Вам нужно создать другой вопрос и описать ваш 404 более подробно (например, имя локального файла, операционную систему, имя веб-сервера и настройки).
Опять же, вы можете использовать jQuery, как указано в Google (см. выше), однако вы все равно можете узнать, почему некоторые локальные файлы не получают по запросу.
Ответ №1
Я нашел, что нам нужно иногда использовать noConflict:
jQuery.noConflict()(function ($) { // this was missing for me $(document).ready(function() { other code here…. }); });
Из документов:
Многие библиотеки JavaScript используют $как имя функции или переменной, как это делает jQuery. В случае jQuery $ является просто псевдонимом для jQuery, поэтому вся функциональность доступна без использования $. Если вам нужно использовать другую библиотеку JavaScript вместе с jQuery, верните элемент управления $ обратно в другую библиотеку с вызовом $.noConflict(). Старые ссылки $ сохраняются во время инициализации jQuery; noConflict() просто восстанавливает их.
Ответ №2
Вы получаете эту ошибку только в том случае, если jQuery некорректно загружен, вы можете проверить с помощью firebug, что URL-адрес его пытается загрузить, чтобы вы могли видеть, неверен ли ваш относительный путь.
Кроме того, в отдельной заметке вы можете использовать $(function(){ как сокращенное обозначение $(document).ready(function(){
Ответ №3
Если у вас есть js файл, который ссылается на jquery, это может быть связано с тем, что файл js находится в теле, а не в главном разделе (это была моя проблема). Вы должны перенести свой файл js в раздел главы ПОСЛЕ ссылки jquery.js.
<html> <head> <script src=»https://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.js»></script> <script src=»myfile.js» type=»text/javascript»></script> </head> <body> </body> </html> Ответ №4
см. для вашего пути js, который может быть причиной… потому что вы получите эту ошибку только в том случае, если jQuery неправильно загружен.
Ответ №5
У меня такая же проблема… на http://www.xaluan.com.. но после журнала. Я узнаю, что после запуска jQuery я создаю функцию, используя один элемент id, который не существует.
Например:
$(‘#aaa’).remove() <span class=»aaa»>sss</spam>
поэтому id=»aaa» не существовало.. тогда jQuery перестает работать.. потому что такие ошибки
Ответ №6
Использование:
jQuery(document).ready(function($){ // code where you can use $ thanks to the parameter });
Или его более короткая версия:
jQuery(function($){ // code where you can use $ thanks to the parameter }); Ответ №7
У меня была эта проблема, и из-за меня я пытался включить jQuery через http, пока моя страница была загружена как https.
Ответ №8
У меня была такая же проблема в Chrome, где мои скрипты были такими:
<script src=»./scripts/jquery-1.12.3.min.js»></script> <script src=»./scripts/ol-3.15.1/ol.js» /> <script> … $(document).ready(function() { … }); … </script>
Когда я изменил на:
<script src=»./scripts/jquery-1.12.3.min.js»></script> <script src=»./scripts/ol-3.15.1/ol.js»></script>
$(document).ready был вызван.