2010-10-27 8 views
29

जब मैं अपने पेज, jQuery का उपयोग करता है जब निम्न लाइन मारा जाता है लोड करने का प्रयास नहीं है। क्या किसी ने इसे पहले देखा है?

+3

AFAIK, 'cookie' एक jQuery प्लगइन है। क्या आप उस प्लगइन को लोड कर रहे हैं? –

+0

यह तब भी हो सकता है जब आपकी 'jquery' लाइब्रेरी दो बार लोड हो। –

उत्तर

52

इसका मतलब है कि $.cookie plugin पृष्ठ में शामिल नहीं किया जा रहा है, कम से कम इसे कॉल नहीं किया जा रहा है। सुनिश्चित करें कि यह दोनों शामिल किए जा रहे हैं, और इसे से पहले उपयोग किया जा रहा है। JQuery को स्वयं सुरक्षित होने के बाद ही इसे शामिल करें।

बस एक टिप: कई अन्य प्लगइन्स कुकी प्लगइन पर भरोसा करते हैं (लेकिन यह आवश्यक नहीं है कि यह कॉल करने से पहले मौजूद है या नहीं), आप एक का उपयोग कर सकते हैं।

+1

यह समस्या थी, ऐसा लगता है कि मेरे होस्टिंग प्रदाता को jquery.cookie.js को लोड करने में समस्या हो रही थी, jqueryycookie.js पर नामकरण समस्या हल हो गई – Introgy

+1

यहां अधिक संभावित समाधान: http://stackoverflow.com/questions/18024539/jquery -कुकी-ए-नो-ए-फ़ंक्शन – ElliotSchmelliot

4

नहीं है, लेकिन मैं आप कैसे एक बहुत ही आसान की तरह बनाने के लिए दिखा सकते हैं ...

एक अलग js फ़ाइल बनाएँ, नाम यह आप क्या चाहते हैं, इस में आसानी के लिए, मैं इसे jCook फोन करता हूँ।

अपने हेडर में, के बाद आप जोड़ना jQuery, अपनी नई फ़ाइल जोड़ें:

(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); 

कोशिश पकड़ और नहीं क्या:

<script type="text/javascript" src="jquery.js"></script> 
<script type="text/javascript" src="jCook.js"></script> <!-- here it is! --> 

और नीचे फाइल में डाल करने के लिए आसान कोड है अगर आप कुछ गलत करते हैं तो आपको यह सुनिश्चित करने में मदद मिलती है कि आपको "झूठी" वापसी मिलती है, लेकिन वास्तव में कभी भी कोई समस्या नहीं होनी चाहिए। अपने पृष्ठ है, जहाँ अपनी लोड कोड या जो कुछ भी बस करो है पर उपयोग करने के लिए कोड आसान है ...

निम्नलिखित:

$.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"); 

देखें कैसे आसान था कि !?

और बस को हल करने के लिए, नीचे एक वास्तविक दुनिया उदाहरण डाउन मेनू एक बूंद का चयन के एक राज्य को बचाने के लिए

$(function(){ 
     $("select[name=somthing]").change(function(e) { 
      $.setCookie("selectThis", $(this).val()); 
     }); 
     // And to use ... 
     if ($.getCookie("selectThis")) $("select[name=somthing]").val($.getCookie("selectThis")).change(); 
}); 
+1

इस समाधान से प्यार करें। कार्यान्वित करने में आसान है और मेरी वस्तुओं को सही तरीके से संभालता है – PhillyNJ

+1

बहुत बढ़िया, एक आकर्षण की तरह काम करता है – andypotter

0

अपने डोमेन के लिए Mod_Sec सक्षम करना या आपके होस्टिंग कंपनी पूछ इसे सक्षम करने के लिए प्रयास करें का उपयोग करें। उम्मीद है की यह मदद करेगा।

0

वही समस्या हमारे ड्रूपल 7 स्थापना में हुई। फ़ाइल को अवरुद्ध करने वाले सीपीनल में ModSecurity कॉन्फ़िगरेशन द्वारा, यदि मैं सही ढंग से समझता हूं, तो इसका कारण बनता था। http://forums.cpanel.net/f5/mod-security-blocking-jquery-cookie-javascript-drupal-installation-191002.html

0

मैं इस कोड का उपयोग किया गया है देखें -

if($.cookie('siteLayout') != undefined){ 
    if($.cookie('siteLayout') == 'compact') 
    $(settings.bodyElem).addClass('container'); 
} 

और यह ठीक काम करता है। लेकिन मैं इन-जरूरत एक विशेष पृष्ठ में एक और jQuery संस्करण का इस्तेमाल किया गया है, जहां संस्करण 1.7.2 था, लेकिन मैं वास्तव में 1.10.2 उपयोग कर रहा था के बाद उपयोग कई jQuery संस्करण मैं यह त्रुटि आई -

TypeError: $.cookie is not a function

तो मैं jQuery.cookie इस्तेमाल किया $.cookie के बजाय और यह काम करता है। उम्मीद है, यह भी मदद करेगा;)

0

मेरे लिए यह समस्या jquery के नवीनतम संस्करण को डाउनलोड करने के बाद तय की गई थी।कुकी जेएस

5

असल में इस समस्या के कई कारण हो सकते हैं।

  1. आपने शायद jquery प्लगइन जोड़ा नहीं है।
  2. कुकी प्लगइन
  3. आप पहले से ही दो ऊपर किया है, तो उसके बाद jquery-cookie plugin वह भी मेरी समस्या हल का नया संस्करण डाउनलोड करने की कोशिश से पहले jQuery फ़ाइल को शामिल करना सुनिश्चित करें।
-1
<script src="js/jquery.mobile-1.4.5.min.js"></script> 
<script src="js/jquery.cookie.js"></script> 

पहले प्लगइन juqery.js होना चाहिए और दूसरे प्लगइन cookie.js है

संबंधित मुद्दे