我使用以下代码将数据发送到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
答案 0 :(得分:12)
有一个未记录的端点,它使用JSONP来执行跨域ajax请求。
只需更改'发布?'去'后json?'并添加'& c =?'到标准url的末尾来获取JSONP端点。这不需要在客户端公开API密钥,也不需要创建服务器端视图。
我编写了一个使用此方法的jQuery插件,如果它在所有
中都很有用答案 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"
};
可能是吗?分号很重要。和合