jQuery Ajax POST 不适用于 MailChimp
Posted
技术标签:
【中文标题】jQuery Ajax POST 不适用于 MailChimp【英文标题】:jQuery Ajax POST not working with MailChimp 【发布时间】:2011-07-08 11:42:20 【问题描述】:我使用以下代码将数据发送到 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
【问题讨论】:
这里没有同源策略问题吗? 您不应该在您的问题中使用该方法 - 您将 MailChimp API 密钥暴露给任何知道如何查看网页源代码的人。您应该只将它与服务器端代码一起使用。通过这种曝光,理论上任何人都可以将成员订阅到您的列表、删除它等等。 【参考方案1】:有一个未记录的端点使用 JSONP 进行跨域 ajax 请求。
只需更改“帖子?”到“后json?”并添加 '&c=?'到标准 url 的末尾以获取 JSONP 端点。这不需要在客户端公开 API 密钥,也不需要创建服务器端视图。
我写了一个使用这个方法的 jQuery 插件,如果它有用的话
https://github.com/scdoshi/jquery-ajaxchimp
【讨论】:
【参考方案2】:主要问题是 jc 对您原始帖子的评论 - 由于同源政策问题,这根本行不通。 Firebug 对 GET 调用失败的原因没有直言不讳,但这就是它不返回数据的原因。如果您通过 POST 观看该内容,您会发现 Firefox 甚至没有进行调用。另一方面,Chrome 的 js 控制台直接向您解释了同源策略。
总而言之,如果没有其他原因阻止您公开发布您帐户的 API 密钥(这是一件非常糟糕的事情),这是一件非常好的事情。如果没有立即理解的原因,请仔细阅读 API 中可用的大量方法,然后意识到您需要访问它们的只是那个 API 密钥。
执行此操作的正确方法是将数据 POST 回您的服务器,然后从那里发出请求。有几个完全构建的 php 示例(甚至一个使用 jquery),here。
【讨论】:
感谢您的详细解释。事后我意识到,这正是我在过去遇到类似问题的原因。再次感谢!【参考方案3】:e.preventDefault();
data =
"apikey" : "667378947",
"id" : "90298590285",
"email_address" : "test@getmoxied.net",
"output" : "json"
;
可能吗?分号很重要。呵呵
【讨论】:
也许你需要使用 GET 参数而不是 POST 参数。 但是...您可以使用 GET(在示例中是这样说的)apidocs.mailchimp.com/how-to/#ex1 我不知道 :(jaja以上是关于jQuery Ajax POST 不适用于 MailChimp的主要内容,如果未能解决你的问题,请参考以下文章
wordpress 中的 Ajax 调用不适用于前端站点的订阅者用户
Jquery $.Post 适用于 Firefox 但不适用于 Chrome
jQuery .post() 函数不适用于 Bootstrap
ASP.NET C# SuppressFormsAuthenticationRedirect 不适用于 Ajax POST?