2014-07-06 11 views
14

मैं अपनी वेबसाइट में MailChimps के मानक HTML फॉर्म को एकीकृत करने की कोशिश कर रहा हूं। हालांकि, मेरी साइट में कुछ jquery कोड है जो MailChimp के कोड के साथ समस्याओं में चल रहा है।

निम्नलिखित कोड MailChimp एम्बेडेड प्रपत्र का हिस्सा है:

<script type='text/javascript' src='//s3.amazonaws.com/downloads.mailchimp.com/js/mc- validate.js'></script> 
<script type='text/javascript'> 
(function($) { 
window.fnames = new Array(); window.ftypes = new Array();fnames[0]='EMAIL';ftypes[0]='email';fnames[1]='FNAME';ftypes[1]='text';fnames[2]='LNAME';ftypes[2]='text'; 
}(jQuery)); 
var $mcj = jQuery.noConflict(true); 
</script> 

'.... mailchimp.com/js/mc-validate.js' jQuery के लिए मेरा Google एपीआई के साथ विरोध हुआ तो मैं ले लिया mailchimp की jquery सक्रियण बाहर।

मेरे प्रश्न हैं:

  1. मैं रूप से चलाने के लिए कोड मेरी .html में MailChimp /mc-validate.js लाइन होनी चाहिए या मैं पर भरोसा कर सकते क्या

<script src='http://ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js'> </script> ?

  1. मैं देशी MailChimp jQuery लाइन को दूर करते हैं और googleapi लाइन पर भरोसा करते हैं, तो मैं $mcj=jQuery.noConflict(true) कोड के साथ समस्याओं में चलाने।

मूल प्रश्न यह है: क्या किसी को भी अपनी वेबसाइट में मेल चिम्प को एकीकृत करने और jQuery के साथ इस तरह के मुद्दों में भाग लेने का अनुभव है?

आपके उत्तरों के लिए तत्पर हैं।

+2

एक ही समस्या यहाँ अपने कार्यक्रम में कोड के इस ग्रहणाधिकार का उपयोग कर सकते से पता है । Mailchimp स्क्रिप्ट वैश्विक नामस्थान प्रदूषित करता है और JQUery अपरिभाषित होने का कारण बनता है। –

+1

कृपया कुछ और विशिष्ट एचटीएमएल और जेएस पोस्ट करें या प्रश्न में पृष्ठ के लिंक को शामिल करें यदि आप किसी विशिष्ट समस्या का उत्तर चाहते हैं। इस विस्तृत जानकारी के साथ हम केवल प्रदान की गई जानकारी के साथ सबसे अच्छा जवाब दे सकते हैं। –

+0

मेरे पास बिल्कुल वही समस्या है, केवल jquery.easing.js द्वारा परिभाषित मेरे आसान कार्य अनिर्धारित हो जाते हैं। अगर मैं लाइन 'jQuery.noConflict (true)' को हटा देता हूं, तो सबकुछ ठीक काम करता प्रतीत होता है। वे वहां क्यों हैं? – rassoh

उत्तर

0

मुझे पता है कि यह 3 महीने हो गया है क्योंकि आपने यह पूछा था, लेकिन यदि किसी और के पास एक ही समस्या है तो एक स्पष्टीकरण है।

नीचे दी गई टिप्पणी के जवाब में मैंने एक साधारण HTML उदाहरण बनाया है जिसमें निर्दिष्ट jQuery का संस्करण और क्लासिक मेलचंप फ़ॉर्म शामिल है। जैसा कि आप देख सकते हैं कि कोई त्रुटि नहीं फेंक दी गई है। (http://thepixel.ninja/lab/mailchimp-signup-form/)।

आपको जो त्रुटि मिल रही है वह पृष्ठ पर किसी अन्य स्क्रिप्ट का कारण है। यद्यपि आप से अधिक जानकारी के बिना कहना असंभव है।

अगर आप डीबगिंग के बारे में ज्यादा नहीं जानते हैं और क्या हो रहा है इसकी व्याख्या के बारे में कुछ सरल फिक्स का ब्रेकडाउन यहां दिया गया है।

  1. मैं रूप से चलाने के लिए मेरी .html कोड में MailChimp /mc-validate.js लाइन होनी चाहिए या मैं

< स्क्रिप्ट src पर भरोसा कर सकते क्या = 'http://ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js'> ?

ये दो अलग-अलग स्क्रिप्ट हैं। एक jQuery स्वयं का है और एक मेलचंप सत्यापन कोड है। यदि आपको मेलचंप से जेएस सत्यापन की आवश्यकता होती है तो आपको /mc-validate.js लाइन की आवश्यकता नहीं है। यदि यह कास्ट है तो नीचे दिए गए निर्देशों का पालन करें। इस लाइन को न हटाएं और उम्मीद है कि सब ठीक रहेगा।

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

  1. मैं देशी MailChimp jQuery लाइन को दूर करते हैं और googleapi लाइन पर भरोसा करते हैं, तो मैं $ MCJ = jQuery.noConflict (सही) कोड के साथ समस्याओं में चलाने।

जैसा ऊपर बताया गया है। वे दो अलग-अलग स्क्रिप्ट हैं। आप एक को हटा नहीं सकते हैं और दूसरे पर भरोसा कर सकते हैं क्योंकि वे पूरी तरह से अलग चीजें करते हैं।

यह सब कहा जा रहा है कि मेलचंप स्क्रिप्ट किसी भी तरह से jquery के साथ संघर्ष नहीं करनी चाहिए। मैंने मेलचंप फॉर्म और jquery सैकड़ों बार उपयोग किया है और कभी एक बार कोई समस्या नहीं थी। (उपर्युक्त लिंक देखें) यह समस्या तब हो सकती है जब आपने मेलचंप एचटीएमएल स्निपेट को किसी भी तरह से आपूर्ति की हो या यदि आपके पास अन्य जावास्क्रिप्ट में अन्य त्रुटियां हैं तो आप पेज पर शामिल हैं।

आशा है कि इससे किसी को उन्मूलन की प्रक्रिया से सामना करने वाली समस्याओं का पता लगाने में मदद मिलेगी।

+2

सवाल हल नहीं करता है। समस्याओं को वास्तव में एक समस्या होने पर "कोई समस्या नहीं" के रूप में अस्वीकार करता है। –

+0

इस प्रश्न का पूरी तरह उत्तर देने के लिए त्रुटियों के कारण और अधिक जानकारी के बारे में अधिक जानकारी है और आपके एचटीएमएल और जेएस के वास्तविक सेटअप की आवश्यकता है। मैं केवल इस तथ्य पर टिप्पणी कर रहा था कि यहां कोई अन्य चर शामिल नहीं है और मेलचंप वेबसाइट से डिफ़ॉल्ट मेलचंप साइनअप फॉर्म के साथ निर्दिष्ट स्रोत से निर्दिष्ट jquery के संस्करण का उपयोग करके (यहां लॉग इन होना चाहिए) ">>" आपका सबसे पुराना नाम यहां "->" साइनअप फॉर्म "->" एंबेडेड फॉर्म "->" क्लासिक "बिना किसी विकल्प के बदले में कोई त्रुटि नहीं डाली गई है। मेरा उदाहरण यहां देखें -> http://thepixel.ninja/lab/mailchimp-signup-form/ –

+0

यह भी जवाब है कि लोगों को यह समझने में मदद मिलती है कि मेलचंप साइनअप फॉर्म कैसे काम करता है और पूछताछकर्ता के बीच अंतर को समझने में मदद करने के लिए जावास्क्रिप्ट लाइब्रेरी jQuery और मेलचिंप सत्यापन कोड। मेरा मानना ​​है कि यह उनके दो सवालों का जवाब देता है। वोट के लिए कोई आवश्यकता नहीं है क्योंकि आईडी ने आपकी समस्या का समाधान नहीं किया है। अगर आप अपनी समस्या से मदद चाहते हैं तो मुझे यकीन है कि अगर आप अपनी त्रुटि को दोहराने के उचित उदाहरण शामिल करते हैं तो लोग मदद करेंगे। –

0

तो, यदि आप मेरे जैसे हैं तो आपको प्रत्येक पृष्ठ पर Mailchimp की आवश्यकता नहीं हो सकती है। इस उदाहरण में कल्पना आप इसे लोड कर रहे हैं जब jQuery के माध्यम से की जरूरत है, लेकिन यह विचार अभी भी यह इनलाइन लोड हो रहा है पेज लोड के साथ करने के लिए लागू होता है:

var tmp = jQuery.noConflict(); //This jQuery is the one we want 

      jQuery.getScript("//s3.amazonaws.com/downloads.mailchimp.com/js/mc-validate.js", function(){ 
       (function($) {window.fnames = new Array(); window.ftypes = new Array();fnames[0]='EMAIL';ftypes[0]='email';fnames[1]='FNAME';ftypes[1]='text';fnames[2]='LNAME';ftypes[2]='text';fnames[3]='CGROUP';ftypes[3]='dropdown';}(jQuery)); 

       //Let mailchimp set its own jQuery, destroying window.jQuery 
       var $mcj = jQuery.noConflict(true); 

       //Now, restore the copy of jQuery we saved 
       window.jQuery = tmp.noConflict(); 

      //At this point, things should be as they were before we loaded mailchimp 

      }); 

कुछ अन्य प्रयोक्ताओं के सवालों के जवाब देने के लिए, कारण वे लाइन नहीं है कि Mailchimp jQuery के एक विशिष्ट संस्करण की उम्मीद कर रहा है (अभी के रूप में 1.9.0)। साथ ही, मान लीजिए, आपके उदाहरण में, हम आसान प्लगइन का उपयोग कर रहे हैं। यह window.jQuery को संशोधित करता है, हालांकि Mailchimp jQuery के अलग संस्करण लोड करता है, जिसमें पृष्ठ पर आप जो प्लगइन जोड़ रहे हैं, उनमें से कोई भी प्लगइन नहीं होगा। मेरा मानना ​​है कि उनकी प्रारंभिक सोच यह थी कि हर कोई अपनी स्क्रिप्ट पहले लोड करेगा (जो एक स्वीकार्य वैकल्पिक समाधान है)। हालांकि, उस दृष्टिकोण के साथ इस मुद्दे को हम सर्वोत्तम प्रथाओं कि एक बाहरी साइट से जे एस पिछले लोड किया जाना चाहिए, पहले नहीं

1

आप बस

<script type='text/javascript' src='//s3.amazonaws.com/downloads.mailchimp.com/js/mc- validate.js'></script> 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> 
<script type='text/javascript'> 
(function($) { 
    window.fnames = new Array(); 
    window.ftypes = new Array(); 
    fnames[0]= 'EMAIL';ftypes[0]='email'; 
    fnames[1]='FNAME';ftypes[1]='text'; 
    fnames[2]='LNAME';ftypes[2]='text'; 
    }()); 
    var $mcj = $.noConflict(true); 
</script> 
+0

यह एकमात्र पूर्ण कामकाजी समाधान है - सही तरीके से किया गया .... – dBlaze

+0

मैं केवल कोड का यह टुकड़ा जोड़ूंगा, इसलिए हमारे पास एक ही स्थान (फॉर्म के लिए अनुवाद सहित) सब कुछ है $ mcj.extend ($ mcj। validator.messages, { आवश्यक: "आपका आवश्यक संदेश यहां जाता है।", ईमेल: "कृपया एक मान्य ई-मेल पता संदेश दर्ज करें।", }); – dBlaze

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