Document ready function ошибка

Did you load jQuery in head section? Did you load it correctly?

<head>
   <script src="scripts/jquery.js"></script>
   ...
</head>

This code assumes jquery.js is in scripts directory. (You can change file name if you like)

You can also use jQuery as hosted by Google:

<head>
   <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"></script>
   ...
</head>

As per your comment:

Apparently, your web server is not configured to return jQuery-1.6.1.js on requesting /webProject/jquery-1.6.1.js. There may be numerous reasons for this, such as wrong file name, folder name, routing settings, etc. You need to create another question and describe your 404 in greater details (such as local file name, operation system, webserver name and settings).

Again, you can use jQuery as provided by Google (see above), however you still might want to find out why some local files don’t get served on request.

Добрый день читатели! Сегодня речь пойдет об очень-очень популярной ошибке, которая может возникать в CMS Joomla.

Представьте ситуацию. У вас сайта на Joomla, вы хотите, допустим, вставить сторонний скрипт, например, форму обратной связи на ajax. Вы точно знаете, что эта форма рабочая, не один раз ее использовали и тестировали. Вставляете на ваш сайт на joomla. Проверяете нажимая “отправить” и бамц – ничего не происходит.

В такой ситуации, первым делом вы будете проверять, подключен ли jquery вообще и правильная ли версия. Если вы уверенны, что все сделали правильно, но форма все равно не работает, необходимо проверить firebug консоль, чтобы понять, какую ошибку она вызывает.

В нашем случае ошибка будет

$(document).ready is not a function

По умолчанию в joomla используются некоторые js-фреймворки. Один из таких фреймворков – motools, который переписывает символ $, который вы пытаетесь использовать в ваших скриптах.

Решение проблемы

В вашем скрипте необходимо заменить все “$” на “jQuery”.

Например, если у вас написано

var posName = $("#posName").val();

То вы должны заменить на

var posName = jQuery("#posName").val();

Или у вас

$(document).ready(function()

А должно быть

jQuery(document).ready(function()

И т.д.

Вот и все 🙂 Решение проблемы не очень сложное. Если возникли вопросы, пишите в комментариях

[Solved] $(document).ready is not a function

July 12, 2012
Programming

Solve $(document).ready is not a function

If you develop a website using jQuery with other JavaScript libraries (such as mootools, scriptaculous, etc.) on the same page, you may receive this error message while debugging the page (using firebug):

$ is not a function
$(document).ready(function(){ … (line xxx)

or
$().ready is not a function
or
jQuery : Error: $(document).ready is not a function
(document).ready is not a function

Cause

The error occurs because jQuery is conflicting with the other JavaScript libraries on the page. The other library has already overwritten the $() shortcut for jQuery.

Solution

The best workaround is to wrap the function into this anonymous JavaScript function:

( function($) {
	// code goes here 
} ) ( jQuery );

With this function, we are setting $ as a parameter so $ will overwrite any globally defined variables/references of $ in that particular anonymous function. This allows the use of $ within this function without conflicting with other JavaScript libraries. Let’s see an example below:

This is a sample snippet code that will cause the error similar as above.

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.1/jquery.min.js" type="text/javascript"></script>
<script src="http://ajax.googleapis.com/ajax/libs/prototype/1.6.1.0/prototype.js" type="text/javascript"></script>
<script src="http://ajax.googleapis.com/ajax/libs/scriptaculous/1.8.3/scriptaculous.js" type="text/javascript"></script>
 
<!-- Assume "$" is a prototype reference. This will cause error. -->
<script type="text/javascript">
	$(document).ready(function() {
		$().UItoTop({ easingType: 'easeOutQuart' });
	});
</script>

To solve the error, wrap the function inside the anonymous JavaScript function:

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.1/jquery.min.js" type="text/javascript"></script>
<script src="http://ajax.googleapis.com/ajax/libs/prototype/1.6.1.0/prototype.js" type="text/javascript"></script>
<script src="http://ajax.googleapis.com/ajax/libs/scriptaculous/1.8.3/scriptaculous.js" type="text/javascript"></script>
 
<!-- Assume "$" is a prototype reference. -->
<script type="text/javascript">
	( function($) {
		<!-- Here "$" is a jQuery reference -->
		$(document).ready(function() {
			$().UItoTop({ easingType: 'easeOutQuart' });
		});
	} ) ( jQuery );	
</script>
$(document).ready(function() {
   console.log("Test")
})

и

$(function() {
   console.log("Test")
});

Дают ошибку $ is not a function.

Меняю код на такой:

jQuery(function($) {
   console.log("Test")
})

Код отрабатывает.

Почему так? Использую wordpress, в шапку WordPress’ом выводится:

<script type='text/javascript' src='http://sidnev.ru/wp-includes/js/jquery/jquery.js?ver=1.12.4'></script>
<script type='text/javascript' src='http://sidnev.ru/wp-includes/js/jquery/jquery-migrate.min.js?ver=1.4.1'></script>

Мой скрипт подключается после jQuery.

Вопрос:

Я использую 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 был вызван.

  • Doctor web ошибка 902
  • Doctor web ошибка 900
  • Doctor web код ошибки 16
  • Docs viewer ошибка загрузки
  • Docker перезапустить контейнер при ошибке