jQuery $। cookie एक फ़ंक्शन नहीं है


82

मैं jQuery का उपयोग करके कुकी सेट करने का प्रयास कर रहा हूं:

$.cookie("testCookie", "hello");
alert($.cookie("testCookie"));

लेकिन जब मैं अपना पृष्ठ लोड करता हूं, तो मुझे "$ .cookie एक फ़ंक्शन नहीं है" त्रुटि मिलती है। यहाँ मुझे पता है:

  • मैंने यहाँ jQuery कुकी प्लगइन डाउनलोड किया है
  • मैं jQuery और कुकी प्लगइन को लिंक कर रहा हूं।
  • JQuery और jQuery.cook दोनों 200 ओके के साथ सही लोड हो रहे हैं।

मैं कई अन्य उत्तर (पर ध्यान दिया है यहाँ और यहाँ दूसरों के बीच) है, जो करने के लिए ज्यादातर लोगों cookie.js फ़ाइल का नाम बदलने का सुझाव दिया। मैंने अपनी कुकी फ़ाइल का नाम "jquery.cookeee.js" रखा है, लेकिन परिणाम समान हैं।

यहाँ क्या हो रहा है पर कोई विचार?

यदि यह मदद करता है, तो मैं एमवीसी 4 में एक वेब एप्लिकेशन बना रहा हूं।


आपके ब्राउज़र के कंसोल में कोई अपवाद? शायद jQuery के कुकी संस्करण के आपके संस्करण के लिए jQuery का आपका संस्करण सही नहीं है
Ian

2
क्या आप दो बार jQuery सहित हैं? (सबसे अधिक संभावना हां)। अन्यथा, आप या तो $ .noConflict () का उपयोग कर रहे हैं, या आप किसी अन्य .js फ़ाइल को शामिल कर रहे हैं जो $ ओवरराइड करती है।
केविन बी

1
$ .Fn.jquery आपको jquery.js, और आपके कोड में त्रुटि होने के तुरंत बाद दोनों देता है।
केविन बी

1
@ElliotSchmelliot हाँ, जैसा कि दूसरा पूरी तरह से पहली बार ओवरराइट करेगा, जिसमें सभी प्लगइन्स शामिल हैं।
केविन बी

4
यदि आपको पहले ही उत्तर मिल गया है तो आप स्वयं इसका उत्तर दे सकते हैं। यह रोकता है, कि अन्य एक जवाब पर काम कर रहे हैं या यहां तक ​​कि सवाल भी खोलते हैं।
सर्फिंग

जवाबों:


127

यहां मैं सभी संभावित समस्याओं / समाधानों के बारे में बता रहा हूं:

1. कुकी प्लगइन डाउनलोड करें

$.cookieएक मानक jQuery फ़ंक्शन नहीं है और प्लगइन को यहां डाउनलोड करने की आवश्यकता है<script>जहां आवश्यक हो , उपयुक्त टैग शामिल करना सुनिश्चित करें (अगला देखें)।

2. कुकी प्लगइन से पहले jQuery को शामिल करें

कुकी स्क्रिप्ट को शामिल करते समय, jQuery FIRST को शामिल करना सुनिश्चित करें, फिर कुकी प्लगइन।

<script src="~/Scripts/jquery-2.0.3.js" type="text/javascript"></script>
<script src="~/Scripts/jquery_cookie.js" type="text/javascript"></script>

3. एक से अधिक बार jQuery को शामिल न करें

यह मेरी समस्या थी। सुनिश्चित करें कि आप एक से अधिक बार jQuery को शामिल नहीं कर रहे हैं। यदि आप हैं, तो यह संभव है कि:

  1. jQuery सही ढंग से लोड करता है।
  2. कुकी प्लगइन सही ढंग से लोड होता है।
  3. JQuery का आपका दूसरा समावेश पहली बार ओवरराइट करता है और कुकी प्लगइन को नष्ट कर देता है।

ASP.Net MVC परियोजनाओं का उपयोग करने वाले किसी के लिए, डिफ़ॉल्ट जावास्क्रिप्ट बंडल समावेशन के साथ सावधान रहें। JQuery का मेरा दूसरा समावेश लाइन के नीचे मेरे वैश्विक लेआउट पृष्ठों में से एक था @Scripts.Render("~/bundles/jquery")

4. ".cookie" को शामिल नहीं करने के लिए प्लगइन फ़ाइल का नाम बदलें

कुछ दुर्लभ मामलों में, फ़ाइल को किसी ऐसी चीज़ में बदलना, जिसमें ".cookie" शामिल नहीं है, यह त्रुटि वेब सर्वर समस्याओं के कारण, जाहिर है। डिफ़ॉल्ट रूप से, डाउनलोड की गई स्क्रिप्ट का शीर्षक "jquery.cookie.js" है, लेकिन जैसा कि ऊपर दिखाया गया है, "jquery_cookie.js" जैसी किसी चीज़ का नाम बदलने का प्रयास करें। इस समस्या पर अधिक जानकारी यहाँ हैं


11
मैं एक रूपरेखा का उपयोग कर रहा था, और समस्या jQuery के कई समावेश के साथ थी। बहुत धन्यवाद !!!
jrierab

यह गितुब पर कहता है कि प्लग इन का समर्थन नहीं किया गया था इसलिए मैंने फ़ाइल को नए संस्करण (2.1.0 मुझे लगता है) में अपग्रेड किया और यह काम नहीं किया इसलिए आपको पुराने संस्करण का उपयोग करना होगा जिससे यह उत्तर लिंक करता है।
एरिक ग्रॉसकरेथ

2
मेरे लिए jQuery को एक से अधिक बार जोड़ा गया था
अर्डालन शहघोली

"एक बार से अधिक jQuery सहित" टिप्पणी के लिए धन्यवाद। इसने 7 साल बाद एक मुद्दे को हल किया।
एरिक फ्रांटज़

37

पुराने संस्करण jQuery कुकी की, पदावनत किया गया है, इसलिए यदि आप त्रुटि हो रही है:

$.cookie is not a function

आपको नए संस्करण में अपग्रेड करना चाहिए ।

नए संस्करण के लिए एपीआई भी अलग है - उपयोग करने के बजाय

$.cookie("yourCookieName");

आपको उपयोग करना चाहिए

Cookies.get("yourCookieName");

2
मैं अपने jquery को 3.3.1.js. में अपग्रेड करता हूं लेकिन यह ठीक से काम नहीं करता है। 'अनक्रेडेड रेफरेंसएयर: कुकीज़ परिभाषित नहीं है ’उसी लाइन पर उत्पन्न होता है जिसे मैंने बदला है। क्या मेरे साथ भी कोई ऐसा ही है?
जोंग-हियोन-यो

25

इस कुकी प्लगइन को jquery के लिए जोड़ें।

<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery-cookie/1.4.1/jquery.cookie.min.js"></script>

यह तभी काम किया जब मैंने wp_head()अपने वर्डप्रेस थीम में फ़ंक्शन के बाद आपको दी गई स्क्रिप्ट जोड़ दी ।
ऋषभ

मुझे बस एक फ़ाइल के लिए एक सरल लिंक की आवश्यकता थी और इसने अच्छी तरह से काम पूरा किया। Npm स्थापित है कि सभी की जरूरत नहीं है
डेव

2

जांचें कि आपने स्क्रिप्ट को हेडर में शामिल किया है और पृष्ठ के पाद लेख में नहीं। विशेष रूप से वर्डप्रेस में यह काम नहीं किया:

wp_register_script('cookie', get_template_directory_uri() . '/js/jquery.cookie.js', array(), false, true);

अंतिम पैरामीटर पाद लेख में स्क्रिप्ट सहित इंगित करता है और इसे गलत (डिफ़ॉल्ट) में बदलने की आवश्यकता है। जिस तरह से यह काम किया:

wp_register_script('cookie', get_template_directory_uri() . '/js/jquery.cookie.js');

2

आपको पहले जोड़ना चाहिए jquery.cookie.js उस फ़ंक्शन का उपयोग कर रहे हैं तो आपको अपना js या jQuery जोड़ना ।

जब ब्राउज़र वेबपेज को पहले लोड करता है jquery.cookie.jsतो यह इसे लोड करता है और उसके बाद आप js या jQuery और अब यह फ़ंक्शन उपयोग के लिए उपलब्ध है


0

मुझे भी यह समस्या थी। मुझे पता चला कि $ (डॉक्यूमेंट) पहले से ही काम कर रहा है, जिसमें बॉडी के अंदर एक स्क्रिप्ट टैग में $ .cookie शामिल है, जबकि कुकी के सिर में कुकीज js लोड है, जैसा कि इरादा था। प्लगइन लोडिंग को पूरा कर सकता है।

मैंने $ (दस्तावेज़) पहले से ही स्क्रिप्ट में कुकी प्लगइन लोड स्क्रिप्ट को शरीर में स्थानांतरित कर दिया था और त्रुटि गायब हो गई: डी


0

इस समस्या को हल करने के लिए jQuery $। Cookie एक समस्या नहीं है यह समस्या jquery cdn अपडेट है

 <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>

3
जब आपने यह लिखा है तो आप नशे में कहाँ हैं? वे शब्द उस क्रम में बिल्कुल नहीं चलते।
शायनी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.