Mailchimp 如何在 javascript 中调用 mailchimp 3.0 API

Posted

技术标签:

【中文标题】Mailchimp 如何在 javascript 中调用 mailchimp 3.0 API【英文标题】:Mailchimp how to call mailchimp 3.0 API in javascript 【发布时间】:2016-09-26 09:42:57 【问题描述】:

我正在尝试将电子邮件订阅到 mailchimp 上的列表,我首先按照文档进行操作,使用“邮递员”提出请求,添加了所需内容,一切正常,所以我尝试在我的网站上完成它没用

我尝试使用我在邮递员上设置的相同值发出一个简单的请求,但每次我尝试发送请求时,响应都会显示

XMLHttpRequest 无法加载 https://us12.api.mailchimp.com/3.0/lists/xxxxxx/members。回复 预检请求未通过访问控制检查:否 'Access-Control-Allow-Origin' 标头出现在请求的 资源。因此不允许使用原点“https://mywebsite.com” 使用权。响应的 HTTP 状态代码为 501。

我试图找到一种方法来克服这个问题,但这是不可能的

我在 *** 上搜索了每个人都说要使用 jsonp 或在 ajax 调用中添加一些东西或使用 mailchimp ajax 插件,但没有任何效果

我尝试了不同的 *** 帖子,比如这个 Mailchimp subscribe using jQuery AJAX? 但几乎所有人都这么说

我试过cache: falsedataType:jsonpcrossDomain: truexhrFields: withCredentials: true

这是我的代码,我正在使用 Jquery

$.ajax(
          type: "POST",
          url: "https://usxx.api.mailchimp.com/3.0/lists/xxxxxxxx/members",

          data:  "email_address":email@adress.com,  "status":"subscribed",
          headers: 
            "Authorization": "Basic xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx==",
            "Content-Type": "application/json"
          ,
          success: function(data)
             alert('Thanks for subscribing');
          ,
          error: function(data)
            alert('there was an error, try again later');
          
);

我也想过创建自己的 api,然后调用 mailchimp api,但我可能会遇到同样的问题

你有什么建议吗?

提前致谢

【问题讨论】:

请搜索该错误。这是 CORS 问题,每天都会多次询问这个问题。如果 API 未启用 CORS 或 jsonp,则需要在服务器上使用代理 @charlietfl 我到处搜索,但并非所有人都建议使用代理,谢谢您的评论 【参考方案1】:

正如 charliefl 所说,这是一个 CORS 问题。 MailChimp 不支持 CORS,主要是因为它需要您将 API 凭据传递给网页的用户,从而允许他们接管您的整个帐户。

MailChimp 的两个选项是通过服务器代理您的请求,或者,为了让人们注册到您的列表,您可以使用更受限制的 API 的build a custom signup form。第二种方法的注意事项是,它强制您通过 MailChimp 的双重选择流程进行所有订阅。

【讨论】:

我看过你写的那篇文章,但是 jsonp 在 api 3.0 上不起作用,所以我唯一的选择是代理,谢谢你的帮助! 这是一个愚蠢的借口。还有其他电子邮件订阅服务和方法允许 CORS 交互而不暴露私钥。它们只需要构建和测试。 这不是借口,而是对相关系统的描述。当然,可以构建具有不同功能的不同系统,但这是 ***,而不是 MailChimp 功能请求网站,因此这里的答案旨在帮助提问者解决他们的问题。

以上是关于Mailchimp 如何在 javascript 中调用 mailchimp 3.0 API的主要内容,如果未能解决你的问题,请参考以下文章

Mailchimp Javascript 请求

MailChimp:为啥带有 javascript 的 PUT 方法返回“使用 PUT 插入或更新列表成员”

Javascript + MailChimp API 订阅

使用 Javascript AJAX(不是 jQuery)提交嵌入式 Mailchimp 表单

mc:edit 在带有 Mandrill Javascript API 的 Mailchimp 模板中不起作用

javascript mailchimp-popup.js