为了账号安全,请及时绑定邮箱和手机立即绑定

AJAX Mailchimp注册表单集成

/ 猿问

AJAX Mailchimp注册表单集成

45度呼吸 2019-09-18 14:54:48

有没有办法将mailchimp简单(一个电子邮件输入)与AJAX集成,因此没有页面刷新,也没有重定向到默认的mailchimp页面。


此解决方案无法使用jQuery Ajax POST无法使用MailChimp



查看完整描述

3 回答

?
POPMUISE

您不需要API密钥,您只需将标准mailchimp生成的表单放入您的代码中(根据需要自定义外观)并在表单“action”属性中更改post?u=为post-json?u=,然后在表单操作结束时附加&c=?以解决任何跨域问题。另外需要注意的是,提交表单时必须使用GET而不是POST。


默认情况下,您的表单标记看起来像这样:


<form action="http://xxxxx.us#.list-manage1.com/subscribe/post?u=xxxxx&id=xxxx" method="post" ... >

改变它看起来像这样


<form action="http://xxxxx.us#.list-manage1.com/subscribe/post-json?u=xxxxx&id=xxxx&c=?" method="get" ... >

Mail Chimp将返回一个包含2个值的json对象:'result' - 这将指示请求是否成功(我只见过2个值,“error”和“success”)和'msg' - 一条消息描述结果。


我用这个jQuery提交我的表单:


$(document).ready( function () {

    // I only have one form on the page but you can be more specific if need be.

    var $form = $('form');


    if ( $form.length > 0 ) {

        $('form input[type="submit"]').bind('click', function ( event ) {

            if ( event ) event.preventDefault();

            // validate_input() is a validation function I wrote, you'll have to substitute this with your own.

            if ( validate_input($form) ) { register($form); }

        });

    }

});


function register($form) {

    $.ajax({

        type: $form.attr('method'),

        url: $form.attr('action'),

        data: $form.serialize(),

        cache       : false,

        dataType    : 'json',

        contentType: "application/json; charset=utf-8",

        error       : function(err) { alert("Could not connect to the registration server. Please try again later."); },

        success     : function(data) {

            if (data.result != "success") {

                // Something went wrong, do something to notify the user. maybe alert(data.msg);

            } else {

                // It worked, carry on...

            }

        }

    });

}


查看完整回答
反对 回复 2019-09-18
?
慕莱坞5435954

根据gbinflames的回答,我保留了POST和URL,这样表格将继续适用于JS关闭的人。


<form class="myform" action="http://XXXXXXXXXlist-manage2.com/subscribe/post" method="POST">

  <input type="hidden" name="u" value="XXXXXXXXXXXXXXXX">

  <input type="hidden" name="id" value="XXXXXXXXX">

  <input class="input" type="text" value="" name="MERGE1" placeholder="First Name" required>

  <input type="submit" value="Send" name="submit" id="mc-embedded-subscribe">

</form>

然后,使用jQuery的.submit()更改了类型,并使用URL来处理JSON repsonses。


$('.myform').submit(function(e) {

  var $this = $(this);

  $.ajax({

      type: "GET", // GET & url for json slightly different

      url: "http://XXXXXXXX.list-manage2.com/subscribe/post-json?c=?",

      data: $this.serialize(),

      dataType    : 'json',

      contentType: "application/json; charset=utf-8",

      error       : function(err) { alert("Could not connect to the registration server."); },

      success     : function(data) {

          if (data.result != "success") {

              // Something went wrong, parse data.msg string and display message

          } else {

              // It worked, so hide form and display thank-you message.

          }

      }

  });

  return false;

});


查看完整回答
反对 回复 2019-09-18

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信