jQuery Ajax POST无法使用MailChimp

时间:2011-03-04 00:41:48

标签: javascript jquery ajax json mailchimp

我使用以下代码将数据发送到MailChimp通讯列表(API v3)。每次我从函数中删除type: POST时,它都会尝试通过GET发布数据并正确发送数据(在MailChimp API仪表板中确定响应)。在浏览器(FF)中测试时,我得到一个带有“true”响应的.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

3 个答案:

答案 0 :(得分:12)

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

只需更改'发布?'去'后json?'并添加'& c =?'到标准url的末尾来获取JSONP端点。这不需要在客户端公开API密钥,也不需要创建服务器端视图。

我编写了一个使用此方法的jQuery插件,如果它在所有

中都很有用

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

答案 1 :(得分:8)

主要问题是jc评论了你原来的帖子 - 由于同源策略问题,这根本不起作用。关于GET调用失败的原因,Firebug没有发声,但这就是它没有返回数据的原因。如果你通过POST观看,你会看到Firefox甚至没有拨打电话。另一方面,Chrome的js控制台直接解释了同源策略。

总而言之,如果没有其他原因阻止您公开发布帐户的API密钥,这是一件非常好的事情,这是一件非常糟糕的事情。如果原因没有立即陷入其中,请阅读API中提供的大量方法,然后意识到访问它们所需的只是API密钥。

执行此操作的正确方法是将数据POST回服务器,然后从那里发出请求。有几个完全构建的PHP示例(一个使用jquery,偶数),here

答案 2 :(得分:-2)

e.preventDefault();
data = {
  "apikey" : "667378947", 
  "id" : "90298590285", 
  "email_address" : "test@getmoxied.net", 
  "output" : "json"
};
可能是吗?分号很重要。和合