javascript - read - npm js cookies
$.cookie no es una funciĆ³n (9)
Cuando intento cargar mi página que usa jquery, cuando se golpea la siguiente línea:
if ($.cookie(''compare'') != null)
Me sale el error $ .cookie no es una función. Alguien ha visto esto antes?
¿Tienes el plugin de cookies jQuery ?
Básicamente, puede haber varias razones para este problema.
- Es posible que no haya agregado el plugin jquery.
- Asegúrese de incluir el archivo jQuery antes del plugin de cookies
- Si ya ha hecho los dos anteriores, intente descargar la nueva versión del complemento jquery-cookie que también resolvió mi problema.
El mismo problema ocurrió en nuestra instalación de Drupal 7. Fue causado, si entiendo correctamente, por la configuración de ModSecurity en cPanel bloqueando el archivo. Ver http://forums.cpanel.net/f5/mod-security-blocking-jquery-cookie-javascript-drupal-installation-191002.html
Eso significa que el complemento $.cookie
no se está incluyendo en la página, al menos no se está llamando. Asegúrese de que ambos estén incluidos y se incluyan antes de que se usen. Inclúyalo justo después de jQuery para estar seguro.
Solo un consejo: varios otros complementos dependen del plugin de cookies (pero no necesariamente verifica si existe antes de llamarlo), podrías estar usando uno.
He estado usando este código -
if( $.cookie(''siteLayout'') != undefined ){
if( $.cookie(''siteLayout'') == ''compact'' )
$(settings.bodyElem).addClass(''container'');
}
Y funciona bien Pero tenía que usar otra versión de jQuery en una página específica donde la versión era 1.7.2 pero en realidad estaba usando 1.10.2 Después de usar la versión jQuery múltiple, recibí este error:
TypeError: $ .cookie no es una función
luego utilicé jQuery.cookie
lugar de $.cookie
y funciona. Espero, esto también ayudará;)
Intente habilitar Mod_Sec para su dominio o solicite a su empresa de alojamiento que lo habilite. Espero que esto ayude.
No, pero puedo mostrarte cómo hacer uno muy fácil como ...
Cree un archivo js separado, asígnele el nombre que desee, para facilitar esto, lo llamaré jCook.
En su encabezado, después de agregar jQuery, agregue su nuevo archivo:
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="jCook.js"></script> <!-- here it is! -->
Y debajo está el código EASY para poner en el archivo:
(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);
El try catch y lo que no solo ayuda a asegurar que obtengas un retorno "falso" si haces algo incorrecto, pero realmente nunca debería ser un problema. Usar el código es fácil ...
En su página, donde su código de carga o lo que sea, haga lo siguiente:
$.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");
¡Mira qué simple fue eso !?
Y para resolverlo, a continuación se muestra un ejemplo del uso del mundo real para guardar un estado de un menú desplegable de selección
$(function(){
$("select[name=somthing]").change(function(e) {
$.setCookie("selectThis", $(this).val());
});
// And to use ...
if ($.getCookie("selectThis")) $("select[name=somthing]").val( $.getCookie("selectThis") ).change();
});
Para mí, el problema se solucionó después de descargar la última versión de jquery.cookie js
<script src="js/jquery.mobile-1.4.5.min.js"></script>
<script src="js/jquery.cookie.js"></script>
el primer complemento debe ser juqery.js y el segundo complemento es cookie.js