2010-08-22 13 views
6

मुझे मेलविंप को उस साइट पर एकीकृत करने का सबसे अच्छा समय रहा है जिसे मैं डिजाइन कर रहा हूं!MailChimp jQuery Conflict

समस्या यह है कि सत्यापन एम्बेडेड सदस्यता फॉर्म के लिए काम नहीं कर रहा है। त्रुटि संदेशों को रेखांकित करने के बजाय, फॉर्म त्रुटियों को सही करने या सूची ऑप्टिमाइज़ करने के लिए मेलचंप साइनअप पेज पर उपयोगकर्ता को लात मार रहा है।

मैंने कोड पर भारी मात्रा में अनुकूलन किया है, इसलिए दुर्भाग्य से वापस जा रहा है डिफ़ॉल्ट एक विकल्प नहीं है।

यहाँ त्रुटियों मैं हो रही हैं, लेकिन मैं एक जे एस n00b हूँ तो मैं नहीं जानता कि वे क्या मतलब है:

त्रुटि mce_jQuery पर तोड़ परिभाषित नहीं है:

Screen shot 2010-08-22 at 4.34.50 AM.jpg

मुझे नहीं लगता कि यह एक त्रुटि है जिसे कंसोल के साथ पकड़ा जा सकता है।

अजीब बात यह है। अगर मैं कस्टम कोड निकाल देता हूं और मेलचंप से स्थिर कोड पोस्ट करता हूं तो यह किसी भी तरह काम करता है, लेकिन मैंने सभी प्रासंगिक कोडों को महत्वपूर्ण कार्यों के साथ कॉपी किया है और अभी भी कोई पासा नहीं है।

आप साइट पर लाइव देख सकते हैं: http://ranya.net/wp/contact

MailChimp सूची साइनअप ऊपरी दाएं कोने रपट लटकती में है। संबंधित स्क्रिप्ट div # top_mailing के ठीक बाद एम्बेडेड हैं।

उत्तर

1

एलेक स्मार्ट के जवाब लगभग सही था। NoConflict मोड में jQuery चलाकर समस्या हल हो गई थी। एलेक ने सुझाव दिया कि मैं jQuery.noConflict() जोड़ता हूं; दस्तावेज़ के शीर्षलेख में। यह पता चला है कि MailChimp एम्बेड कोड में एक पंक्ति है जिस पर टिप्पणी की गई है। ताकि ठीक से के लिए

//var mce_jQuery = jQuery.noConflict(); 

MailChimp स्क्रिप्ट खोज के लिए noConflict मोड सक्षम टिप्पणी निकालना इतना है कि यह इस

var mce_jQuery = jQuery.noConflict(); 

तरह लग रहा है और फिर तुम जाना अच्छा होना चाहिए करने के लिए! :)

1

प्रयास करें शीर्ष पर सही करने के लिए इस कोड का स्थान बदलना (जैसे <head> तुरंत बाद टैग):

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js"></script> 
<script>jQuery.noConflict();</script> 
<script type="text/javascript" src="http://downloads.mailchimp.com/js/jquery.validate.js"></script> 
<script type="text/javascript" src="http://downloads.mailchimp.com/js/jquery.form.js"></script> 
+0

अच्छा प्रयास करें, लेकिन नहीं, चलने के बाद, यह अभी भी इनलाइन सत्यापन नहीं करता है :( – Brian

+0

आप अपने कोड में jQuery के 2 संस्करण लोड कर रहे हैं। क्या आप वाकई ऐसा करना चाहते हैं? –

+0

आप लगभग सही थे Alec संकल्प के लिए नीचे मेरा जवाब देखें :) – Brian

3

या आप बस सिर्फ इस चर mailChimp.js में नाम बदल सकते हैं:

var mce_jQuery = jQuery.noConflict(); 

को
var mce_jQuery = jQuery; 

पता नहीं क्यों MailChimp डेवलपर्स डॉलर हस्ताक्षर को फिर से लिखने का फैसला किया एक विधि के साथ।

2

jQuery 1.8.1 और 28 वीं के रूप में नवीनतम MailChimp कोड का उपयोग 2013

मैं इसे uncomment करने के लिए उपरोक्त टिप्पणी नहीं पा सके सकता है।

मैं हालांकि इस MailChimp कोड देख सकते हैं:

function mce_init_form(){ 
jQuery(document).ready(function($) { 

इस बात का मेरे समझ महान नहीं है, लेकिन यह फिर से प्रदान करती है डिफ़ॉल्ट jQuery $ चर।

function mce_success_cb(resp){ 
$('#mce-success-response').hide() 

जो MailChimp कोड ऊपर

मैं इसे बदल ट्रिपिंग था

को
function mce_success_cb(resp){ 
jQuery(document).ready(function($) { 
$('#mce-success-response').hide(); 

और यह काम करता है:

हालांकि, बाद में कोड में इस था। बिल्कुल यकीन नहीं है कि क्यों (और एक स्पष्टीकरण पसंद आएगा!) लेकिन सोचा कि मैं पोस्ट करूंगा क्योंकि कोई इस प्रश्न में उसी तरह से आ सकता है जैसा मैंने किया था।

+0

आपका समाधान मेरे लिए काम किया। – Anthony

+0

बढ़िया! खुशी है कि – user1010892

+0

क्या आपने नई लाइन 'jQuery (दस्तावेज़) .ready (फ़ंक्शन ($) {' '? यदि कोई है, तो? – novicePrgrmr

2

मुझे उपर्युक्त समाधानों में से कोई भी भाग्य नहीं था, शायद इसलिए कि अंतिम उत्तर एक वर्ष से अधिक पुराना है और अब वर्तमान मेलचंप कोड को प्रतिबिंबित नहीं करता है।

मेरे jQuery संघर्षों को हल करने के लिए, मैंने mc-validate.js स्क्रिप्ट की प्रतिलिपि बनाई है कि MailChimp http://s3.amazonaws.com/downloads.mailchimp.com/js/mc-validate.js से कार्य करता है और इसे अपने सर्वर पर रखता है। फिर मैंने इसे सुंदर बनाया और फ़ाइल से jquery कोड हटा दिया। इस तरह, अब हमारे सर्वर पर केवल jquery के हमारे संस्करण को छोड़ दिया गया है और अब कुछ भी संघर्ष नहीं है।

जैसा दिखता है, आपको अब भी var $mcj = jQuery.noConflict(true); लाइन की आवश्यकता नहीं होगी।

@mailchimp: इस समस्या का एक बड़ा समाधान होगा यदि आप केवल अपने अमेज़ॅन सर्वर पर कोड का एक अलग संस्करण प्रदान कर सकते हैं, जिसमें jquery शामिल नहीं है।