AJAX Mailchimp 注册表单集成
2022-08-30 04:28:02
有没有办法将mailchimp simple(一个电子邮件输入)与AJAX集成,因此没有页面刷新,也没有重定向到默认的mailchimp页面。
此解决方案不起作用 jQuery Ajax POST 无法与 MailChimp 一起使用
谢谢
有没有办法将mailchimp simple(一个电子邮件输入)与AJAX集成,因此没有页面刷新,也没有重定向到默认的mailchimp页面。
此解决方案不起作用 jQuery Ajax POST 无法与 MailChimp 一起使用
谢谢
您不需要API密钥,您所要做的就是将标准mailchimp生成的表单放入您的代码中(根据需要自定义外观),然后在表单中将“action”属性更改为表单,然后在表单操作的末尾追加以解决任何跨域问题。另外,请务必注意,当您提交表单时,您必须使用GET而不是POST。post?u=
post-json?u=
&c=?
默认情况下,您的表单标记将如下所示:
<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个值,“错误”和“成功”)和'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...
}
}
});
}
根据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;
});