Estoy tratando de configurar una cookie usando jQuery:
$.cookie("testCookie", "hello");
alert($.cookie("testCookie"));
Pero cuando cargo mi página, recibo el error "$ .cookie no es una función". Esto es lo que sé:
- He descargado el complemento de cookies de jQuery aquí .
- Estoy enlazando a jQuery y LUEGO al complemento de cookies.
- Tanto jQuery como jQuery.cookie se cargan correctamente con 200 OK.
He visto varias otras respuestas ( aquí y aquí, entre otras), a las que la mayoría de la gente sugirió cambiar el nombre del archivo cookie.js. He cambiado el nombre de mi archivo de cookies "jquery.cookeee.js" pero los resultados son los mismos.
¿Alguna idea de lo que está pasando aquí?
Si ayuda, estoy creando una aplicación web en MVC 4.
javascript
jquery
asp.net-mvc
cookies
ElliotSchmelliot
fuente
fuente
Respuestas:
Aquí están todos los posibles problemas / soluciones con los que me he encontrado:
1. Descarga el complemento de cookies
$.cookie
no es una función estándar de jQuery y el complemento debe descargarse aquí . Asegúrese de incluir la<script>
etiqueta adecuada cuando sea necesario (consulte a continuación).2. Incluya jQuery antes del complemento de cookies
Al incluir el script de cookies, asegúrese de incluir jQuery FIRST, luego el complemento de cookies.
<script src="~/Scripts/jquery-2.0.3.js" type="text/javascript"></script> <script src="~/Scripts/jquery_cookie.js" type="text/javascript"></script>
3. No incluya jQuery más de una vez
Este era mi problema. Asegúrese de no incluir jQuery más de una vez. Si es así, es posible que:
Para cualquiera que use proyectos ASP.Net MVC, tenga cuidado con las inclusiones de paquetes javascript predeterminados. Mi segunda inclusión de jQuery fue dentro de una de mis páginas de diseño global debajo de la línea
@Scripts.Render("~/bundles/jquery")
.4. Cambie el nombre del archivo del complemento para que no incluya ".cookie"
En algunos casos raros, cambiar el nombre del archivo a algo que NO incluya ".cookie" ha solucionado este error, aparentemente debido a problemas del servidor web. De forma predeterminada, el script descargado se titula "jquery.cookie.js", pero intente cambiarle el nombre a algo como "jquery_cookie.js" como se muestra arriba. Más detalles sobre este problema están aquí .
fuente
La versión anterior de jQuery Cookie ha quedado obsoleta, por lo que si recibe el error:
$.cookie is not a function
debe actualizar a la nueva versión .
La API de la nueva versión también es diferente, en lugar de utilizar
$.cookie("yourCookieName");
Deberías usar
Cookies.get("yourCookieName");
fuente
agregue este complemento de cookies para jquery.
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery-cookie/1.4.1/jquery.cookie.min.js"></script>
fuente
wp_head()
función en mi tema de WordPress.Compruebe que incluyó el script en el encabezado y no en el pie de página de la página. Particularmente en WordPress, este no funcionó:
wp_register_script('cookie', get_template_directory_uri() . '/js/jquery.cookie.js', array(), false, true);
El último parámetro indica que se incluye el script en el pie de página y debe cambiarse a falso (predeterminado). La forma en que funcionó:
wp_register_script('cookie', get_template_directory_uri() . '/js/jquery.cookie.js');
fuente
Primero debe agregar y
jquery.cookie.js
luego agregar su js o jQuery donde esté usando esa función.Cuando el navegador carga la página web primero, carga esto
jquery.cookie.js
y luego usted js o jQuery y ahora esa función está disponible para su usofuente
Yo tuve este problema también. Descubrí que tener una función $ (document) .ready que incluía un $ .cookie en una etiqueta de script dentro del cuerpo mientras se cargaba la cookie js en la cabeza ABAJO jquery como se esperaba, resultó en $ (document) .ready siendo procesado antes de la cookie el complemento podría terminar de cargarse.
Moví el script de carga del complemento de cookies en el cuerpo antes del script $ (document) .ready y el error desapareció: D
fuente
Resolver jQuery $ .cookie no es una función que este problema jquery cdn actualice en resolver este problema
<script src="https://code.jquery.com/jquery-3.3.1.js" integrity="sha256-2Kok7MbOyxpgUVvAk/HJ2jigOSYS2auK4Pfzbm7uH60=" crossorigin="anonymous"></script> <script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js" integrity="sha256-T0Vest3yCU7pafRw9r+settMBX6JkKN06dqBnpQ8d30=" crossorigin="anonymous"></script>
fuente