jQuery Ajax POST无法使用MailChimp

我有以下代码用于将数据发送到MailChimp通讯列表(API v3)。 每次我删除type: POST从函数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

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

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

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

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

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

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

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

 e.preventDefault(); data = { "apikey" : "667378947", "id" : "90298590285", "email_address" : "test@getmoxied.net", "output" : "json" }; 

可能? 分号很重要。 呵呵