Когда я пытаюсь загрузить мою страницу, использующую jquery, при нажатии следующей строки:
if ($.cookie('compare') != null)
Я получаю ошибку $.cookie не является функцией. Кто-нибудь видел это раньше?
Когда я пытаюсь загрузить мою страницу, использующую jquery, при нажатии следующей строки:
if ($.cookie('compare') != null)
Я получаю ошибку $.cookie не является функцией. Кто-нибудь видел это раньше?
Это означает, что плагин $.cookie
не включен в страницу, по крайней мере, не вызвав его. Удостоверьтесь, что он включен и включен, прежде чем он будет использоваться. Включите его сразу после того, как сам jQuery будет в безопасности.
Просто подсказка: несколько других плагинов полагаются на плагин cookie (но не обязательно проверяют, существует ли это до его вызова), вы можете использовать его.
У вас есть jQuery cookie?
Нет, но я могу показать вам, как сделать очень легко...
Создайте отдельный файл js, назовите его, что хотите, для удобства этого я назову его jCook.
В вашем заголовке после добавления jQuery добавьте новый файл:
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="jCook.js"></script> <!-- here it is! -->
И ниже приведен код EASY для размещения в файле:
(function($) {
if (!$.setCookie) {
$.extend({
setCookie: function(c_name, value, exdays) {
try {
if (!c_name) return false;
var exdate = new Date();
exdate.setDate(exdate.getDate() + exdays);
var c_value = escape(value) + ((exdays==null) ? "" : "; expires="+exdate.toUTCString());
document.cookie = c_name + "=" + c_value;
}
catch(err) {
return false;
};
return true;
}
});
};
if (!$.getCookie) {
$.extend({
getCookie: function(c_name) {
try {
var i, x, y,
ARRcookies = document.cookie.split(";");
for (i = 0; i < ARRcookies.length; i++) {
x = ARRcookies[i].substr(0,ARRcookies[i].indexOf("="));
y = ARRcookies[i].substr(ARRcookies[i].indexOf("=")+1);
x = x.replace(/^\s+|\s+$/g,"");
if (x == c_name) return unescape(y);
};
}
catch(err) {
return false;
};
return false;
}
});
};
})(jQuery);
Попробуйте поймать и что не только помогает гарантировать вам получение "ложного" возврата, если вы что-то не так, но на самом деле никогда не должно быть проблемой. Использовать код легко...
На вашей странице, где ваш код загрузки или что-то другое, выполните следующие действия:
$.setCookie("nameOfCookie", "someValue", 30); // where 30 is the number
// of days to expire, or you could leave blank as:
$.setCookie("nameOfCookie", "someValue")
// And to retrieve your cookie
$.getCookie("nameOfCookie");
Посмотрите, как это было!?
И только для того, чтобы решить, ниже приведен пример реального мира, чтобы сохранить состояние выбранного выпадающего меню
$(function(){
$("select[name=somthing]").change(function(e) {
$.setCookie("selectThis", $(this).val());
});
// And to use ...
if ($.getCookie("selectThis")) $("select[name=somthing]").val( $.getCookie("selectThis") ).change();
});
В принципе, для этой проблемы могут быть разные причины.
Попробуйте включить Mod_Sec для своего домена или попросите свою хостинговую компанию включить его. Надеюсь, это поможет.
Такая же проблема возникла в нашей установке Drupal 7. Это было вызвано, если я правильно понимаю, настройкой ModSecurity в cPanel, блокирующей файл. См. http://forums.cpanel.net/f5/mod-security-blocking-jquery-cookie-javascript-drupal-installation-191002.html
Я использую этот код -
if( $.cookie('siteLayout') != undefined ){
if( $.cookie('siteLayout') == 'compact' )
$(settings.bodyElem).addClass('container');
}
И он отлично работает. Но мне нужно было использовать другую версию jQuery на определенной странице, где версия была 1.7.2, но я фактически использовал 1.10.2. После использования нескольких версий jQuery я получил эту ошибку -
TypeError: $.cookie не является функцией
то я использовал jQuery.cookie
вместо $.cookie
, и он работает. Надеюсь, это также поможет;)
Для меня проблема была исправлена после загрузки последней версии jquery.cookie js
$.cookie не является стандартной функцией jQuery. При включении скрипта cookie обязательно включите jQuery FIRST, а затем плагин cookie. т.е.
<script src="~/Scripts/jquery-2.0.3.js" type="text/javascript"></script>
всегда должен предшествовать
<script src="~/Scripts/jquery_cookie.js" type="text/javascript"></script>
<script src="js/jquery.mobile-1.4.5.min.js"></script>
<script src="js/jquery.cookie.js"></script>
первый плагин должен быть juqery.js, а второй плагин - cookie.js