3

私は自分のmailchimpをあまり使っていないので、事前に作成されたテンプレートを使用せずにフォームデータをmailchimpに簡単に送信できるかどうか疑問に思っています. また、mailchimp は何らかのコールバックを送信しますか? フォームを送信し、終了するとユーザーをダウンロードページにリダイレクトしたい。すべて ajax/jquery で動作するようになればさらに良いでしょう。

4

1 に答える 1

3

基本的に、ajax()独自のカスタム HTML フォームで jQuery を使用して、MailChimp API と通信する PHP ファイルにアクセスします。MailChimp からの応答は Ajax 経由で元のフォームに返されるため、リダイレクトや更新はありません。ただし、リダイレクトしたい場合は、jQuery ajax 関数を変更するだけです。

PHP を使用していない場合でも、サーバーにインストールされている可能性があります。ユーザーが PHP ファイルを見ることはありません。それらはバックエンドで使用されているだけです。

出典:以前に投稿したSOの回答...

しばらく手探りしたところ、jQuery を使用した PHP の例を使用しているサイトを見つけました。そこから、基本的なサインアップ フォームを含む単純な 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 キーとリスト ID を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 では、外観とオプションは無限大です。

  • Mailchimp サイトの PHP サンプルの一部としてダウンロードされ、API KEYLIST IDで変更されたstore- address.php ファイル。他のオプション フィールドを配列に追加する必要があります。

  • Mailchimpサイトからダウンロードした MCAPI.class.php ファイル (PHP 5 の場合はバージョン 1.3、PHP 4 の場合はバージョン 1.2)。store-address.phpと同じディレクトリに配置するか、store- address.php内の URL パスを更新して見つけられるようにする必要があります。

于 2012-03-31T17:07:40.287 に答える