jquery, कुकीज़ हटाएं


90

मैं कुकीज़ को हटाने के लिए JQuery का उपयोग करना चाहता हूं; मैंने यह कोशिश की

$.cookie('name', '', { expires: -1 });

फिर मैं पृष्ठ को ताज़ा करता हूं और कुकी अभी भी है:

alert('name:' +$.cookie('name'));

क्यों? धन्यवाद


ब्राउज़र के पुनः आरंभ होने के बाद ही कुछ ब्राउज़र कुकी को हटा देगा।
ज़ोल्कि

जवाबों:


145

JQuery के साथ कुकी को हटाने के लिए, मान को शून्य पर सेट करें:

$.cookie("name", null, { path: '/' });

संपादित करें: अंतिम समाधान pathकुकी को एक्सेस करने के दौरान संपत्ति को स्पष्ट रूप से निर्दिष्ट करना था , क्योंकि ओपी विभिन्न निर्देशिकाओं में कई पृष्ठों से कुकी तक पहुंचता है, और इस प्रकार डिफ़ॉल्ट पथ अलग थे (यह मूल प्रश्न में वर्णित नहीं था)। समाधान नीचे चर्चा में खोजा गया था, जो बताता है कि यह उत्तर क्यों स्वीकार किया गया - सही नहीं होने के बावजूद।

कुछ संस्करणों के लिए jQ कुकी के ऊपर का समाधान कुकी को स्ट्रिंग नल में सेट करेगा। इस प्रकार कुकी को हटा नहीं रहा है। नीचे दिए गए सुझाव के अनुसार कोड का उपयोग करें।

$.removeCookie('the_cookie', { path: '/' });

लेकिन यहां स्रोत से: plugins.jquery.com/files/jquery.cookie.js.txt :, if (value === null) { value = '';options.expires = -1;}कि प्रोसेसिंग फंक्शन के अंदर क्या होता है, इसलिए वे उसी का प्रदर्शन करने वाले हैं। (पैरामीटर्स हैं (name, value, options))
एयूलरन

9
क्या कुकी सेटिंग कोड और परीक्षण कोड एक ही पृष्ठ पर है? यदि नहीं, तो आपको pathदोनों कमांड के विकल्पों में स्पष्ट रूप से सेट करने की आवश्यकता होगी , क्योंकि यह वर्तमान पृष्ठ के पथ पर चूक जाता है। अपने डोमेन को उन सभी स्थानों पर स्थापित करने के लिए परीक्षण करें, जहां कुकी पढ़ी और लिखी गई है:$.cookie('name', value, {path:'/'})
चाडविक

1
चैडविक> शायद आप सही हैं। एक्सम के लिए। मैंने site.com में कुकीज सेट कीं, फिर site.com/user, site.com/user/mod, site.com/user/mod/new पर जाएं और मैं इस सारे पेज में कुकीज़ देखना चाहता हूं। पथ कैसा दिखना चाहिए, इस तरह: {पथ: '/'}
user319854

2
यह कोड कुकी को नहीं हटाता है, लेकिन इसके मूल्य में शून्य सेट करता है।
तोमज़ान

12
-1 क्योंकि यह वास्तव में कुकी को हटाता नहीं है। $.removeCookie('cookie_name')कर देता है।
रोजडी कासिम

71

आप यह कोशिश कर सकते हैं:

$.removeCookie('the_cookie', { path: '/' });

स्रोत: https://github.com/carhartl/jquery-cookie#readme


याह .. मैं इसके साथ ठीक हूँ
प्रलय

जब आप उप-डोमेन का उपयोग करते हैं तो आपको इसे निर्दिष्ट भी करना पड़ सकता है। विशेष रूप से क्योंकि डोमेन नाम की शुरुआत में अवधि की आवश्यकता हो सकती है (.www.example.com)
एलेक्सिस विल्के

ध्यान दें, यह हमारे लिए काम नहीं करता था जहां कोड को किसी अन्य कारण से किसी अन्य फ़ंक्शन में जाने की आवश्यकता होती है। $ .cookie ('नाम', अशक्त) जैसा कि ऊपर अधिक विश्वसनीय लगता है। हालांकि यह कुकी कुछ लोगों के लिए काम कर सकती है।
लिगेंमर

यह वास्तव में असली जवाब है!
कलसचनी

15

आप jquery.cookie प्लगइन का उपयोग किए बिना कुकीज़ भी हटा सकते हैं:

document.cookie = 'NAMEOFYOURCOOKIE' + '=; expires=Thu, 01-Jan-70 00:00:01 GMT;';

4

यह कुकी की गलतफहमी की समस्या है। ब्राउज़र्स कुकी मानों को न केवल कुंजियों के लिए पहचानते हैं, विकल्प पथ और डोमेन की तुलना भी करते हैं। इसलिए ब्राउजर्स अलग-अलग मूल्य को पहचानते हैं कि सर्वर सेटिंग विकल्प (पथ = '/'; डोमेन = 'mydomain.com') के साथ कुकी का मान जो कुंजी 'नाम' है और कुंजी बिना किसी विकल्प के साथ 'नाम' है।



1

मेरे लिए तभी काम किया pathगया था, जब सेट किया गया था:

$.cookie('name', null, {path:'/'})

डाउनवोटिंग का कारण बनता है कि आप मेरे उत्तर को कॉपी करें और पेस्ट करें
ओटो कानेलिस

1
@OttoKanellis तो मैं स्वीकार किए गए उत्तर को भी कम करने का सुझाव देता हूं (क्योंकि यह मेरे उत्तर के बाद संपादित किया गया था) और आपके उत्तर को भी नीचे कर देगा (क्योंकि आपने पथ पैरामीटर के महत्व को उजागर नहीं किया है )!
एंड्रॉन

-3

आप जो कर रहे हैं वह सही है, समस्या कहीं और है, जैसे कि कुकी को फिर से ताज़ा करने पर किसी तरह सेट किया जा रहा है।


4
हालांकि यह लिंक प्रश्न का उत्तर दे सकता है, लेकिन उत्तर के आवश्यक भागों को शामिल करना और संदर्भ के लिए लिंक प्रदान करना बेहतर है। लिंक-केवल उत्तर अमान्य हो सकते हैं यदि लिंक किए गए पृष्ठ बदल जाते हैं।
उरई अगासी

इस उत्तर के लिए, मैं जो कह रहा हूं वह यह है कि ओपी इसे सही तरीके से कर रहा है। ओपी कोड कॉपी-पेस्ट करना निरर्थक होगा, और एक और कोड जोड़ना पाठक को भ्रमित करेगा। कोई स्क्रॉल कर सकता है और देख सकता है कि ओपी क्या कर रहा था, यह यहां "आवश्यक हिस्सा" है। हालांकि, अगर आपको ऐसा लगता है कि कुछ को शामिल करना बेहतर होगा (जाहिरा तौर पर कुछ लोग, करते हैं ... उनमें से एक ने भी मेरे जवाब को मत दिया :), बस उत्तर को संपादित करें और तदनुसार इसे ठीक करें। सादर
तुलसी

लिंक के साथ समस्या यह है कि वे "सड़ांध" करते हैं - वे बदलते हैं, वे चलते हैं, वे गायब हो जाते हैं (बिंदु में मामला - आपका पहले से ही मर चुका है!)। यही कारण है कि हम यह पसंद करते हैं कि आप संबंधित पाठ को इसके साथ लिंक से उद्धृत करें, इसलिए आपका उत्तर स्व सम्‍मिलित होगा (यह भी देखें meta.stackexchange.com/questions/8231/… )
Uri Agassi

मैं इसके बारे में अच्छी तरह से जानता हूं, लेकिन फिर से: यहां ऐसा नहीं है। ऊपर दिए गए पूरे उत्तर को फिर से लिखा जा सकता है, "आप जो कर रहे हैं वह सही है, समस्या कहीं और है, जैसे कि कुकी को फिर से ताज़ा करने पर किसी तरह फिर से सेट किया जा रहा है"। तो, फिर से, लिंक रॉट एक समस्या है, जिसमें लिंक के बगल में ही उत्तर भी शामिल है। इस उत्तर के लिए यह अप्रासंगिक है।
एयूलर

इसलिए बार-बार, यदि किसी उत्तर में एक लिंक है, और वह लिंक मृत है, तो इसका मतलब यह नहीं है कि उत्तर पर्याप्त नहीं है। कुछ लिंक केवल अतिरिक्त विवरण प्रदान करने के लिए हैं, लेकिन उत्तर की पूर्णता के लिए आवश्यक नहीं हैं। यह व्यवहार मुझे एक बुरी तरह से प्रोग्राम किए गए बॉट की तरह लगता है जिसमें संदर्भ लिंक को समझने के लिए मूल एनएलपी नहीं है। आपको ऐसा करने से रोकना चाहिए।
Aulon
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.