MailChimp jQuery Conflict - PullRequest
       14

MailChimp jQuery Conflict

6 голосов
/ 22 августа 2010

Я потратил больше всего времени на интеграцию 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 ]

4 голосов
/ 08 февраля 2012

Или вы можете просто переименовать эту переменную в mailChimp.js:

var mce_jQuery = jQuery.noConflict();

до

var mce_jQuery = jQuery;

Не знаю, почему разработчики MailChimp решили переписать знак доллара с помощью метода.

2 голосов
/ 08 декабря 2014

Мне не повезло ни с одним из вышеперечисленных решений, возможно потому, что последнему ответу больше года, и он больше не отражает текущий код 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.

2 голосов
/ 28 мая 2013

Используя 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()

, который отключал почтовый код

Я изменил его на

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

, и он работает.Не совсем уверен, почему (и хотел бы объяснений!), Но думал, что я опубликую, потому что кто-то может столкнуться с этим вопросом так же, как я.

1 голос
/ 22 августа 2010

Ответ Алек Смарт был почти верен.Запустив jQuery в режиме NoConflict, проблема была решена.Алек предложил мне добавить jQuery.noConflict ();в заголовке документа.Оказывается, в коде встраивания MailChimp есть строка, которая закомментирована.Чтобы правильно включить режим noConflict для сценария MailChimp, выполните поиск

 //var mce_jQuery = jQuery.noConflict();

Удалите комментарий, чтобы он выглядел следующим образом

 var mce_jQuery = jQuery.noConflict();

, и тогда вам будет хорошо!:)

1 голос
/ 22 августа 2010

Попробуйте переместить этот код справа вверху (как сразу после тега <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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...