Подтвердить что ты не робот

Mailchimp подписывается с помощью jQuery AJAX?

Что такое полное решение для подписки на использование jQuery для списка на Mailchimp?

Проблема заключается в том, что большинство решений используют библиотеку или требуют кода на стороне сервера. Я хочу быстрое элегантное решение, которое дает мне полный контроль над пользовательским интерфейсом, следовательно, UX формы и ее функциональности.

4b9b3361

Ответ 1

Решение

@Nagra - это хорошо, но оно будет вызывать ошибку при выполнении из браузера клиента в силу стратегий безопасности одинакового происхождения. По сути, эти меры безопасности существуют для предотвращения запросов межсайтового сайта, которые возникают, когда отправитель и отправитель находятся в разных доменах.

Если вы видите ошибки, подобные приведенным ниже в консоли javascript, это четкое указание.

XMLHttpRequest cannot load http://YOUR-MAILCHIMP-URL. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin http://BROWSER-LOCATION is therefore not allowed access.

Чтобы преодолеть эту проблему, необходимо перезаписать script, чтобы использовать CORS или JSONP. Поскольку API MailChimp не поддерживает CORS, единственным вариантом является недокументированный интерфейс JSONP.

Измените URL-адрес, чтобы использовать версию /subscribe/post -json?, а также append & c =?. После обновления URL-адреса вам также потребуется изменить dataType в хеше JSON jsonp

Обновленные первые несколько строк функции должны быть похожи на приведенные ниже.

$.ajax({
    url: '//YOUR URL&id=YOUR LIST ID&c=?',
    data: $('#YOUR FORM').serialize(),
    dataType: 'jsonp',

Ответ 2

  • Получите URL-адрес списка, выбрав Список > Формы регистрации > (Классическая форма). Вы найдете его в Копировать/вставить на ваш сайт 'textarea, и он, скорее всего, начнется с вашего имени пользователя.

    $('#your-form').submit(function (e) {
        e.preventDefault();
    
        $.ajax({
            url: 'YOUR URL',
            type: 'GET',
            data: $('#your-form').serialize(),
            dataType: 'jsonp',
            contentType: "application/json; charset=utf-8",
            success: function (data) {
               if (data['result'] != "success") {
                    //ERROR
                    console.log(data['msg']);
               } else {
                    //SUCCESS - Do what you like here
               }
            }
        });
    });