Próbuję ustawić plik cookie za pomocą jQuery:
$.cookie("testCookie", "hello");
alert($.cookie("testCookie"));
Ale kiedy ładuję moją stronę, pojawia się błąd „$ .cookie nie jest funkcją”. Oto co wiem:
- Pobrałem tutaj wtyczkę do plików cookie jQuery .
- Łączę się z jQuery a NASTĘPNIE wtyczką cookie.
- Zarówno jQuery, jak i jQuery.cookie ładują się poprawnie z 200 OK.
Przyjrzałem się kilku innym odpowiedziom ( między innymi tutaj i tutaj ), na które większość osób sugerowała zmianę nazwy pliku cookie.js. Zmieniłem nazwę mojego pliku cookie na „jquery.cookeee.js”, ale wyniki są takie same.
Jakieś pomysły na temat tego, co się tutaj dzieje?
Jeśli to pomoże, tworzę aplikację internetową w MVC 4.
javascript
jquery
asp.net-mvc
cookies
ElliotSchmelliot
źródło
źródło
Odpowiedzi:
Oto wszystkie możliwe problemy / rozwiązania, z którymi się spotkałem:
1. Pobierz wtyczkę cookie
$.cookie
nie jest standardową funkcją jQuery i wtyczkę należy pobrać tutaj . Pamiętaj, aby w<script>
razie potrzeby dołączyć odpowiedni tag (patrz dalej).2. Dołącz jQuery przed wtyczką cookie
Włączając skrypt cookie, pamiętaj, aby najpierw dołączyć jQuery, a następnie wtyczkę cookie.
<script src="~/Scripts/jquery-2.0.3.js" type="text/javascript"></script> <script src="~/Scripts/jquery_cookie.js" type="text/javascript"></script>
3. Nie dołączaj jQuery więcej niż raz
To był mój problem. Upewnij się, że nie dołączasz jQuery więcej niż raz. Jeśli tak, możliwe jest, że:
Każdy, kto korzysta z projektów ASP.Net MVC, powinien zachować ostrożność w przypadku domyślnych dołączeń pakietu JavaScript. Moje drugie włączenie jQuery miało miejsce na jednej z moich globalnych stron układu pod linią
@Scripts.Render("~/bundles/jquery")
.4. Zmień nazwę pliku wtyczki, aby nie zawierała pliku „.cookie”
W rzadkich przypadkach zmiana nazwy pliku na taką, która NIE zawiera „.cookie”, rozwiązała ten błąd, prawdopodobnie z powodu problemów z serwerem WWW. Domyślnie pobrany skrypt nosi nazwę „jquery.cookie.js”, ale spróbuj zmienić jego nazwę na taką jak „jquery_cookie.js”, jak pokazano powyżej. Więcej szczegółów na temat tego problemu znajduje się tutaj .
źródło
Stara wersja jQuery Cookie została zaniechana, więc jeśli jesteś uzyskiwanie błąd:
$.cookie is not a function
powinieneś uaktualnić do nowej wersji .
Interfejs API nowej wersji jest również inny - zamiast używania
$.cookie("yourCookieName");
powinieneś użyć
Cookies.get("yourCookieName");
źródło
dodaj tę wtyczkę cookie do jquery.
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery-cookie/1.4.1/jquery.cookie.min.js"></script>
źródło
wp_head()
funkcji w moim motywie wordpress.Sprawdź, czy umieściłeś skrypt w nagłówku, a nie w stopce strony. Szczególnie w WordPressie ten nie działał:
wp_register_script('cookie', get_template_directory_uri() . '/js/jquery.cookie.js', array(), false, true);
Ostatni parametr wskazuje dołączenie skryptu do stopki i należy go zmienić na false (domyślnie). Sposób działania:
wp_register_script('cookie', get_template_directory_uri() . '/js/jquery.cookie.js');
źródło
Powinieneś najpierw dodać,
jquery.cookie.js
a następnie dodać swój js lub jQuery, w którym używasz tej funkcji.Kiedy przeglądarka ładuje stronę najpierw to wczytuje to,
jquery.cookie.js
a potem js lub jQuery i teraz ta funkcja jest dostępna do użyciaźródło
Ja też miałem ten problem. Dowiedziałem się, że posiadanie funkcji $ (document) .ready, która zawiera $ .cookie w tagu skryptu wewnątrz ciała, podczas gdy plik cookie js ładuje się w nagłówku PONIŻEJ jquery, co spowodowało, że $ (dokument). Był już przetwarzany przed plikiem cookie wtyczka może zakończyć ładowanie.
Przeniosłem skrypt ładowania wtyczki cookie do treści przed skryptem $ (document) .ready i błąd zniknął: D
źródło
Rozwiąż jQuery $ .cookie nie jest funkcją tego problemu Aktualizacja jquery cdn w rozwiązaniu tego problemu
<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>
źródło