0

在开始之前,我发现了这一点: 使用他们的 API 创建一个基本的 MailChimp 注册表单,这似乎可以满足我的要求,但需要注意的是:

我的表格在 Shopify 上。这是一个应用程序,可让客户在产品有货时收到通知。我想要一个复选框,让他们也可以订阅我们的时事通讯。所以最终结果是它仍然会发布到应用程序,但会将它们添加到我们的时事通讯数据库中。

上述解决方案可以远程完成吗?即我把 PHP 文件放在我的主网站上,并让 ajax 指向 url?有没有更简单的方法来做到这一点?

<script type="text/javascript">
$(document).ready(function() {
      var create_callback = function(data) {
        if (data.status == 'OK') {
        $.fancybox({
            'href': '#inline_message'
            });                                
          //alert(data.message);
        } else {
          //alert("Oops! An error occurred. Please check the email address you entered and try again.");
        $.fancybox({
            'href': '#inline_message'
        });                               
          $("#inline_message").html('<h3>Oops! Looks like an error occurred.</h3> <p>Please check the email address you entered and try again.</p>');
        }
      }
      $('#notify_button').click(function(event) {
        event.preventDefault();
        BISPopover.create($('#notify_email').val(), $('#product-select :selected').val()).then(create_callback);
      });
    $('#BIS_form_submit').submit(function() {
        var isChecked = $('#chkSelect').is(':checked');
        if(isChecked){
            $.ajax({
                url: 'http://www.myURL.com/inc/store-address.php', // proper url to your "store-address.php" file
                data: $('#BIS_form_submit').serialize(),
                success: function(msg) {
                    $('#message').html(msg);
                }
            });
            return false;
        }
    });                       
});      
</script>

 <div id="BIS_form">
    <form id="BIS_form_submit">
    <input type="hidden" name="ajax" value="true" />
    <h3 id="notify-title">Notify me when this is back in stock:</h3>
    <input type="email" id="notify_email" value="Email address" onfocus="value=''"/>
    <button id="notify_button" class="first">Submit</button>
    <input type="checkbox" id="chkSelect" /><span style="font-size:10px;position:relative;top:3px;left:3px;">Add me to the Newsletter</span>
    </form>
</div> 
4

2 回答 2

0

我不认为您将能够远程使用 MailChimp API:即从客户端的浏览器。-- 参见jQuery Ajax POST 不能与 MailChimp 一起使用

我认为您的单击事件处理程序#notify_button需要将数据 AJAX 到服务器上的处理程序。该处理程序将与 MailChimp API 交互以将客户的电子邮件地址添加到时事通讯中。

于 2013-05-03T18:20:03.860 回答
0

我希望回答我自己的问题不是坏事,但我有它的工作。我知道这是一个边缘案例,但也许有人会发现它有帮助。

代码:

<script type="text/javascript">
    $(document).ready(function() {
        var create_callback = function(data) {
            if (data.status == 'OK') {
                $.fancybox({'href': '#inline_message'});                                
            } else {
                $.fancybox({'href': '#inline_message'});                               
                $("#inline_message").html('<h3>Oops! Looks like an error occurred.</h3> <p>Please check the email address you entered and try again.</p>');
            }                       
        }

        $('#notify_button').click(function(event) {
        event.preventDefault();
        BISPopover.create($('#mce-EMAIL').val(), $('#product-select :selected').val()).then(function(data) {
            var BISData = data; // keep a reference to the response from the app
            var isChecked = $('#chkSelect').is(':checked');
                if(isChecked) {
                    url = 'http://YourListURL';
                    EMAIL = $("#mc_form input[name=EMAIL]").val();
                    $.ajax({
                      type: "POST",
                      url: url,
                      data: {EMAIL : EMAIL},
                      dataType: 'json',
                      complete: function(){
                        create_callback(BISData);
            if (BISData.status == 'OK') {
                $.fancybox({'href': '#inline_message'});                                
            } else {
                $.fancybox({'href': '#inline_message'});                               
                $("#inline_message").html('<h3>Oops! Looks like an error occurred.</h3> <p>Please check the email address you entered and try again.</p>');
            }                                       
                      }
                    });                                 
                }
                else {
                    create_callback(BISData);
                }
        });
        });

    });                 
</script>                   
<div id="BIS_form">
    <form id="mc_form">
    <h3 id="notify-title">Notify me when this is back in stock:</h3>
    <input type="email" id="mce-EMAIL" name="EMAIL" value="Email address" onfocus="value=''"/>
    <button id="notify_button" class="first">Submit</button>
     <input type="checkbox" id="chkSelect" /><span>Add me to the Newsletter</span>
    </form>
</div>

它在控制台中引发错误,但它仍然有效。这可能是由于源位于不同的服务器上。我愿意接受有关如何改进这一点的建议。您可以在这里看到它的功能(您可能需要四处寻找缺货的变体):

http://store.manitobah.ca/collections/mukluks/

于 2013-05-30T12:27:06.647 回答