используя существующую форму для отправки данных в mailchimp, затем перенаправьте - PullRequest
3 голосов
/ 31 марта 2012

Я не очень много работал с моим mailchimp, поэтому мне интересно, можно ли было легко отправить данные формы в mailchimp без использования их готовых шаблонов. Кроме того, mailchimp отправит какой-нибудь ответный звонок? Я хочу отправить форму, после чего она перенаправит пользователя на страницу загрузки. Было бы еще лучше, если бы все это работало в ajax / jquery.

1 Ответ

3 голосов
/ 31 марта 2012

Обычно вы используете jQuery ajax() в своей собственной HTML-форме для доступа к файлам PHP, которые взаимодействуют с API MailChimp. Ответы от MailChimp возвращаются к вашей исходной форме через Ajax, поэтому нет перенаправления или обновления. Однако, если вы хотите перенаправить, вы просто измените ajax-функцию jQuery, чтобы сделать это.

Даже если вы не используете PHP, скорее всего, он установлен на вашем сервере. Ваши пользователи никогда не увидят файлы PHP; они просто используются на заднем плане.

Источник: ТАК ответ, который я отправил ранее ...

Поработав некоторое время, я нашел сайт, использующий пример PHP с jQuery. После этого мне удалось создать простую HTML-страницу с jQuery, содержащую базовую форму регистрации. Файлы PHP «спрятаны» в фоновом режиме, где пользователь их никогда не видит, но jQuery все еще может получить доступ и использовать.

1) Скачать пример PHP 5 jQuery здесь ...

http://apidocs.mailchimp.com/downloads/mcapi-simple-subscribe-jquery.zip

Если у вас только PHP 4, просто загрузите MCAPI версии 1.2 и замените соответствующий MCAPI.class.php файл выше.

http://apidocs.mailchimp.com/downloads/mailchimp-api-class-1-2.zip

2) Следуйте инструкциям в файле Readme, добавив ключ API и идентификатор списка в файл store-address.php в соответствующих местах.

3) Возможно, вы также захотите собрать имя вашего пользователя и / или другую информацию. Вы должны добавить массив в файл store-address.php, используя соответствующие переменные слияния.

Вот как выглядит мой store-address.php файл, где я также собираю имя, фамилию и тип электронной почты:

<?php

function storeAddress(){

    require_once('MCAPI.class.php');  // same directory as store-address.php

    // grab an API Key from http://admin.mailchimp.com/account/api/
    $api = new MCAPI('123456789-us2');

    $merge_vars = Array( 
        'EMAIL' => $_GET['email'],
        'FNAME' => $_GET['fname'], 
        'LNAME' => $_GET['lname']
    );

    // grab your List's Unique Id by going to http://admin.mailchimp.com/lists/
    // Click the "settings" link for the list - the Unique Id is at the bottom of that page. 
    $list_id = "123456a";

    if($api->listSubscribe($list_id, $_GET['email'], $merge_vars , $_GET['emailtype']) === true) {
        // It worked!   
        return 'Success!&nbsp; Check your inbox or spam folder for a message containing a confirmation link.';
    }else{
        // An error ocurred, return error message   
        return '<b>Error:</b>&nbsp; ' . $api->errorMessage;
    }

}

// If being called via ajax, autorun the function
if($_GET['ajax']){ echo storeAddress(); }
?>

4) Создайте форму HTML / CSS / jQuery. Не обязательно быть на странице PHP.

Вот как выглядит мой index.html файл:

<html>
<head>
    <title>Welcome</title>
    <style type="text/css" media="screen">
        body    { font-size: 16px; }
        input { font-size: 16px; }
        .textinput { width: 300px; height: 20px; }
        #message { color: #8e2c30; font-size: 15px; font-weight: bold; padding: 10px; border: solid 1px #6d6e70; }
    </style>
</head>
<body>
    <div style="width:550px;">
        <div style="text-align:right;">
        <b>Sign Up for the Newsletter:</b><br />
        <br />
            <form id="signup" action="index.html" method="get">
                First Name:&nbsp; <input type="text" name="fname" id="fname" class="textinput" value="" />
                            <br />
                Last Name:&nbsp; <input type="text" name="lname" id="lname" class="textinput" value="" />
                            <br />
            email Address (required):&nbsp; <input type="email" name="email" id="email" class="textinput" value="" />
                            <br />
            <input type="radio" name="emailtype" value="html" checked="checked">HTML&nbsp;&nbsp;<input type="radio" name="emailtype" value="text">Text&nbsp;&nbsp;<input type="radio" name="emailtype" value="mobile">Mobile Device<br />
            <br />
            <input type="submit" id="SendButton" name="submit" class="textinput" value="Submit" />
            </form>
        </div>
        <div id="message">
        </div>  
    </div>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.5.0/jquery.min.js" type="text/javascript"></script>
    <script type="text/javascript">
        var emailEntered,
            fnameVal,
            lnameVal,
            emailtypeVal;

        $(document).ready(function() {
            $("#SendButton").click(function() {
                    $(".error").hide();
                    var emailReg = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/;
                    var emailaddressVal = $("#email").val();

                    if(emailaddressVal == '') {
                        $("#message").html('<span class="error">Enter your email address before submitting.</span>');
                        return false; 
                    }
                    else if(!emailReg.test(emailaddressVal)) {
                        $("#message").html("<span class='error'>That is not an email address.&nbsp;  Typo?</span>");
                        return false; 
                    } 
                    else {
                        emailEntered = escape($('#email').val());
                    }

                    fnameVal        = escape($("#fname").val());
                    lnameVal        = escape($("#lname").val());
                    emailtypeVal    = $('input:radio[name=emailtype]:checked').val();

            });
            $('#signup').submit(function() {
                $("#message").html("<span class='error'>Adding your email address...</span>");
                $.ajax({
                    url: 'inc/store-address.php', // proper url to your "store-address.php" file
                    data: 'ajax=true&email=' + emailEntered +'&fname=' + fnameVal + '&lname=' + lnameVal + '&emailtype=' + emailtypeVal,
                    success: function(msg) {
                        $('#message').html(msg);
                    }
                });
                return false;
            });
        });
    </script>
</body>
</html>

Требуется штук ...

  • index.html , построенный, как указано выше или аналогичный. С jQuery внешний вид и опции бесконечны.

  • store-address.php , загруженный как часть примеров PHP на сайт Mailchimp и измененный с помощью API KEY и LIST ID . Вам необходимо добавить другие дополнительные поля в массив.

  • MCAPI.class.php файл, загруженный с сайта Mailchimp (версия 1.3 для PHP 5 или версия 1.2 для PHP 4). Поместите его в тот же каталог, в котором находится store-address.php , или вы должны обновить путь URL-адреса в store-address.php , чтобы он мог его найти.

...