9

我有以下代码用于将数据发送到 MailChimp 通讯列表 (API v3)。每次我type: POST从函数中删除它时,它都会尝试通过 GET 发布数据并正确发送数据(MailChimp API 仪表板中的正常响应)。在浏览器 (FF) 中对此进行测试时,我得到一个带有“真实”响应的 .part 文件。

   $(function(){
     $("a#test").click(function(e){
       e.preventDefault()  
       data = {
         "apikey" : "667378947", 
         "id" : "90298590285", 
         "email_address" : "test@getmoxied.net", 
         "output" : "json"
       }

  $.ajax({ 
    type: "POST",
    url: 'http://us2.api.mailchimp.com/1.3/?method=listSubscribe',
    data: data,
    success: function(data){
      alert(data);
    },
    error: function(){
      alert("err");
    }
  })       
 });
});   

我在这个上拔了头发,非常感谢任何见解。

提前致谢,

JN

4

3 回答 3

14

有一个未记录的端点使用 JSONP 执行跨域 ajax 请求。

只是改变'职位?到“后json?” 并添加 '&c=?' 到标准 url 的末尾以获取 JSONP 端点。这不需要在客户端公开 API 密钥,也不需要创建服务器端视图。

我写了一个使用这个方法的 jQuery 插件,如果它有用的话

https://github.com/scdoshi/jquery-ajaxchimp

于 2013-05-04T02:08:17.627 回答
9

主要问题是 jc 对您的原始帖子的评论 - 由于同源政策问题,这根本行不通。Firebug 对 GET 调用失败的原因没有直言不讳,但这就是它不返回数据的原因。如果您通过 POST 观看该内容,您会发现 Firefox 甚至没有进行调用。另一方面,Chrome 的 js 控制台直接向您解释了同源策略。

总而言之,如果没有其他原因阻止您公开发布帐户的 API 密钥,这是一件非常好的事情,这是一件非常糟糕的事情。如果没有立即理解的原因,请仔细阅读 API 中可用的大量方法,然后意识到您需要访问它们的只是那个 API Key。

正确的方法是将数据 POST 回您的服务器,然后从那里发出请求。这里有几个完全构建的 PHP 示例(甚至一个使用 jquery)。

于 2011-03-04T16:34:04.737 回答
-2
e.preventDefault();
data = {
  "apikey" : "667378947", 
  "id" : "90298590285", 
  "email_address" : "test@getmoxied.net", 
  "output" : "json"
};

可能?分号很重要。呵呵

于 2011-03-04T00:46:52.890 回答