2013-05-03 101 views
0

我开始之前,我发现这一点:Create a basic MailChimp signup form using their API这似乎做我想做的,但这里的警告:Shopify 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> 

回答

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/

0

我不认为你将能够远程使用MailChimp API:即从客户端的浏览器。 - 请参阅jQuery Ajax POST not working with MailChimp

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

+0

我想我的印象是,该商店address.php在做这一点。 – Patrick 2013-05-03 18:22:54