什么是完整的jQuery解决方案,可用于订阅Mailchimp中的用户列表?
问题在于大多数解决方案要么使用库,要么需要服务器端代码。我想要一种快速优雅的解决方案,它可以让我完全控制表单的UI和功能,从而提高用户体验。
@Nagra的解决方案很好,但是如果从客户端浏览器执行,它会因为生效的同源安全策略而抛出错误。实质上,这些安全措施旨在防止跨站点请求,当发起者和发送者位于不同的域时就会发生。
如果您在JavaScript控制台中看到以下类似错误,则是明确的指示。
XMLHttpRequest无法加载http://YOUR-MAILCHIMP-URL。所请求的资源上不存在'Access-Control-Allow-Origin'标头。因此,来自 http://BROWSER-LOCATION 的请求被拒绝访问。
要解决这个问题,脚本需要重写以利用CORS或JSONP。由于MailChimp API不支持CORS,唯一的选择是未记录的JSONP接口。
更改URL以使用/subscribe/post-json?版本,还要在末尾添加&c =?。一旦更新了URL,您还需要修改JSON哈希中的dataType为jsonp。
函数的更新前几行应该类似于以下内容。
$.ajax({
url: '//YOUR URL&id=YOUR LIST ID&c=?',
data: $('#YOUR FORM').serialize(),
dataType: 'jsonp',
type
参数被忽略了。 - Kevin BObtain the URL for the list by selecting the List > Sign Up forms > (Classic form). You will find it on the 'Copy/paste onto your site' textarea and it will most likely begin with your username.
$('#your-form').submit(function (e) {
e.preventDefault();
$.ajax({
url: 'YOUR URL',
type: 'GET',
data: $('#your-form').serialize(),
dataType: 'jsonp',
contentType: "application/json; charset=utf-8",
success: function (data) {
if (data['result'] != "success") {
//ERROR
console.log(data['msg']);
} else {
//SUCCESS - Do what you like here
}
}
});
});