$ (document) .ready (функция () не работает

20

Я использую 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>
    
задан Romi 14.06.2011 в 10:52
источник
  • Вы загрузили jQuery? Вы загрузили его перед своим пользовательским javascript? –  igorw 14.06.2011 в 10:54
  • вы включили js-скрипт. –  Anish 14.06.2011 в 10:54
  • Использовать jQuery (document) .ready (function () вместо $ (document) .ready (function ()). Я думаю, что это работает. –  Ravichandran Jothi 14.06.2011 в 10:56
  • Как вы включаете библиотеку jQuery? Проверьте правильный путь. Если вы используете CDN, убедитесь, что его можно «увидеть» в вашей сети. –  Dan Diplo 14.06.2011 в 10:56
  • да, я включил jquery.js и перед пользовательским скриптом java. –  Romi 14.06.2011 в 10:56
Показать остальные комментарии

9 ответов

24

Вы загрузили 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 (см. выше), однако вы все равно можете узнать, почему некоторые локальные файлы не получают по запросу.

    
ответ дан Dan Abramov 14.06.2011 в 10:57
  • Престижность к хостингу google. –  TaylorMac 14.06.2011 в 11:01
  • <script src="ajax.googleapis.com/ajax/libs/jquery/1.6.1/...; когда я использовал это, мой код работает нормально, это означает, что есть проблема с этим путем, но я не понимаю, почему так: O –  Romi 14.06.2011 в 11:28
  • @Romi, вам не хватает http: // или https: // с самого начала URL-адреса. Без него браузер ищет актив в папке CURRENT. –  Nathan J. Brauer 22.04.2013 в 22:06
  • Или //ajax.googleapis.com для этой цели. –  Dan Abramov 23.04.2013 в 20:06
  • Вместо загрузки jQuery в голову вам нужно только загрузить jQuery. –  retroriff 06.11.2016 в 16:40
11

Я нашел, что иногда нужно использовать noConflict :

jQuery.noConflict()(function ($) { // this was missing for me
    $(document).ready(function() { 

       other code here....

    });
});

Из документов:

  

Многие библиотеки JavaScript используют $ как имя функции или переменной, как это делает jQuery. В случае jQuery $ является просто псевдонимом для jQuery, поэтому все функции доступны без использования $ . Если вам нужно использовать другую библиотеку JavaScript вместе с jQuery, верните управление $ обратно в другую библиотеку с вызовом $.noConflict() . Старые ссылки $ сохраняются во время инициализации jQuery; noConflict() просто восстанавливает их.

    
ответ дан abilash kumar 23.04.2014 в 20:39
6

Вы получаете эту ошибку только в том случае, если jQuery некорректно загружен, вы можете проверить с помощью firebug, что URL-адрес его пытается загрузить, чтобы вы могли видеть, неверен ли ваш относительный путь.

Кроме того, в отдельном примечании вы можете использовать $(function(){ как сокращенное выражение для $(document).ready(function(){

    
ответ дан Kokos 14.06.2011 в 11:00
2

Если у вас есть 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>
    
ответ дан 40-Love 24.07.2015 в 21:01
  • Есть ли другой способ заставить его работать вместо того, чтобы помещать функцию внутри головы? –  orezvani 26.01.2017 в 14:31
0

см. для вашего пути js, который может быть причиной ... потому что вы получите эту ошибку только в том случае, если jQuery неправильно загружен.

    
ответ дан Vivek 14.06.2011 в 11:06
0

У меня была эта проблема, и из-за меня я пытался включить jQuery через http, пока моя страница была загружена как https.

    
ответ дан Bishnu Paudel 26.11.2015 в 06:12
0

У меня такая же проблема ... на Ссылка .. но после журнала. Я узнаю, что после запуска jQuery я создаю функцию, используя один элемент id, который не существует.

Например:

$('#aaa').remove()  <span class="aaa">sss</spam> 

, поэтому id="aaa" не существует .. тогда jQuery перестает работать .. потому что такие ошибки

    
ответ дан Binh Nguyen 28.05.2012 в 07:52
0

У меня была такая же проблема в 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 был вызван.

    
ответ дан Chris Tapley 18.05.2016 в 06:57
0

Использование:

jQuery(document).ready(function($){
    // code where you can use $ thanks to the parameter
});

Или его более короткая версия:

jQuery(function($){
    // code where you can use $ thanks to the parameter
});
    
ответ дан Reign.85 25.09.2014 в 12:50
  • В чем разница между вашим кодом кода и кодом? –  Nov 28 '16 at 12:57 28.11.2016 в 13:57
  • Разница заключается в определении параметра $ в качестве параметра. Его старый ответ, но я помню, что получил вопрос с JQuery, $ не был определен. На самом деле теперь я предполагаю, что использование var $ = jQuery должно работать тоже ... –  Reign.85 28.11.2016 в 17:01