【发布时间】:2014-02-24 19:45:34
【问题描述】:
我在从 mailchimp API V2.0 获取正确响应时遇到问题。
当我尝试订阅新用户时
var arr = {
apikey:"xxxx",
id:"secretListId",
email:{
email:"jd@example.com"
},
double_optin:"false"
}
function jsonpCallback (){
alert("jsonpCallback");
};
$.ajax({
type: 'GET',
url: 'https://us6.api.mailchimp.com/2.0/lists/subscribe.json',
dataType: 'jsonp',
jsonpCallback: 'jsonpCallback',
data: arr,
timeout: 4000,
cache: false,
async: false, success: function(data, textStatus, jqXHR) {
alert('success: '+data);
},
error: function(jqXHR, textStatus, errorThrown){
alert('error: '+JSON.stringify(jqXHR));
},
complete: function(jqXHR, textStatus){
alert('complete: '+JSON.stringify(jqXHR));
}
}).success(function(rsp){
console.log('success: '+rsp);
}).fail(function(xhr,error,thrownError){
console.log('fail status:[' + xhr.status + '] error:[' + thrownError + ']');
}).always(function(){
console.log('complete');
});
});
在检查器中我收到错误 500。
在此弹出窗口中应该有另一条消息(错误 500)。
但是当我通过这个链接到浏览器时,我得到:
{
"status": "error",
"code": 214,
"name": "List_AlreadySubscribed",
"error": "jd@example.com is already subscribed to list mpowroznik.com List. Click here to update your profile."
}
为什么这是错误,而不是成功?
我只使用没有 PHP 或其他语言的 jQuery。
函数 jsonpCallback 根本不执行。
我必须做什么,才能得到正确的响应信息。
【问题讨论】:
-
您收到的错误表明您使用的 api 不正确。根据检查器,该 api 返回 500 错误。
-
blog.mailchimp.com/mailchimps-api-v2/#restful 如果有错误,他们总是返回 500。但在弹出窗口中我只能看到 404。
-
如果它返回一个 500 那么这就是为什么它会去错误回调...
-
我明白了。您错误地使用了 jsonp。你不应该定义一个名为 jsonpCallback 的函数,jquery 会为你做这件事。如果您想定义自己的回调,则需要使用 getScript。
-
我也开始觉得这个 api 不支持 JSONP,这与 NEVER USING AN API KEY ON THE CLIENT 的想法是一致的,因为客户端可以看到/窃取它,允许任何使用使用此请求的页面的人窃取您的邮件列表。
标签: javascript jquery ajax api mailchimp