سؤال

لقد قضيت وقتًا مروعًا في دمج MailChimp في موقع أقوم بتصميمه!

المشكلة هي أن التحقق من الصحة لا يعمل في نموذج الاشتراك المضمن. بدلاً من إدخال رسائل الخطأ ، يقوم النموذج بركل المستخدم إلى صفحة الاشتراك في MailChimp لتصحيح الأخطاء أو تأكيد اختيار القائمة.

لقد قمت بعمل قدر كبير من التخصيص للرمز ، لذلك لسوء الحظ ، ليس الخيار الافتراضي.

إليكم الأخطاء التي أحصل عليها ، لكنني JS N00B لذلك لا أعرف ماذا تعني:

لا يتم تعريف كسر MCE_Jquery:

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

لا أعتقد أنه خطأ يمكن القبض عليه مع وحدة التحكم.

الشيء الغريب هو هذا. إذا قمت بتمزيق الرمز المخصص ونشر فقط الرمز الثابت من MailChimp ، فهو يعمل بطريقة أو بأخرى ، لكنني قمت بنسخ جميع التعليمات البرمجية ذات الصلة مع وظائف مهمة وما زلت لا توجد نرد.

يمكنك عرض الموقع على الهواء مباشرة على: http://ranya.net/wp/contact

تسجيل قائمة MailChimp في أعلى المنسدلة الزاوية اليمنى. يتم تضمين البرامج النصية ذات الصلة بعد Div#Top_mailing.

هل كانت مفيدة؟

المحلول 5

كانت إجابة Alec Smart صحيحة تقريبًا. من خلال تشغيل jQuery في وضع noconflict تم حل المشكلة. اقترح ALEC أن أضيف jQuery.noconflict () ؛ في رأس المستند. اتضح أن هناك سطرًا في رمز MailChimp Embed تم التعليق عليه. من أجل تمكين وضع NOCONFLICT بشكل صحيح للبحث عن برنامج MailChimp Script

 //var mce_jQuery = jQuery.noConflict();

قم بإزالة التعليق بحيث يبدو هكذا

 var mce_jQuery = jQuery.noConflict();

وبعد ذلك يجب أن تكون على ما يرام! قون

نصائح أخرى

أو يمكنك ببساطة إعادة تسمية هذا المتغير في mailchimp.js:

var mce_jQuery = jQuery.noConflict();

إلى

var mce_jQuery = jQuery;

لا أعرف لماذا قرر مطورو MailChimp إعادة كتابة الدولار بطريقة ما.

باستخدام JQuery 1.8.1 وأحدث رمز MailChimp اعتبارًا من 28 مايو 2013

لم أتمكن من العثور على التعليق أعلاه لتفكيكه.

ومع ذلك ، يمكنني رؤية رمز 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();

ويعمل. لست متأكدًا تمامًا من السبب (وأحب تفسيرًا!) لكن اعتقدت أنني سأقوم بنشر شخص ما لأن شخصًا ما قد يصادف هذا السؤال بنفس الطريقة التي فعلت بها.

لم يكن لدي حظ مع أي من الحلول المذكورة أعلاه ، ربما لأن الإجابة الأخيرة تبلغ من العمر أكثر من عام ولا تعكس رمز MailChimp الحالي بعد الآن.

لحل نزاعات jQuery الخاصة بي ، قمت بنسخ mc-validate.js السيناريو الذي يخدم MailChimp من http://s3.amazonaws.com/downloads.mailchimp.com/js/mc-validate.js ووضعه على الخادم الخاص بنا. ثم قمت بتجميله وأزلت رمز jQuery من الملف. وبهذه الطريقة ، لم يعد هناك سوى نسختنا من jQuery على خادمنا ولا شيء يتعارض مع ذلك.

كما يبدو ، لن تحتاج أيضًا إلى الخط var $mcj = jQuery.noConflict(true); أي أكثر من ذلك.

MailChimp: سيكون الحل الرائع لهذه المشكلة إذا كان بإمكانك تقديم إصدار مختلف من الكود على خوادم Amazon ، وهذا لا يشمل jQuery.

حاول نقل هذا الرمز إلى الأعلى (مثل مباشرة بعد ذلك <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>
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top