我遇到来自mailchimp API V2.0的getitng正确响应的问题。
当我尝试订阅新用户时
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.
并在警报弹出窗口中
在此弹出窗口中,shold是另一条消息(错误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根本不执行。
我必须做些什么,以获得正确的回复信息。
答案 0 :(得分:4)
此API并非出于特定原因而被浏览器中的代码使用。
通过在浏览器中发出此请求,任何使用发出此请求的页面的人都可以使用您的api密钥并向api发出自己的请求,就像他们一样,从而允许任何人窃取所有添加到列表中的电子邮件地址(甚至清空列表。)
您必须使用服务器端语言(如PHP)与此api进行交互。否则会影响用户/客户的安全。
答案 1 :(得分:1)
function jsonpCallback(data){
alert(JSON.stringify(data[1]));
return data;
}
$.ajax({
type: 'POST',
url: 'http://xxx.us6.list-manage.com/subscribe/post-json?u=copiedFromActionForm&id=idList&c=?',
data: data,
cache: false,
dataType: 'jsonp',
success: function(data, text, xhr){
alert(JSON.stringify(data.msg));
},
error: function (xhr, text, error) {
console.log('error')
console.log(JSON.stringify(xhr.msg));
}
});
在警告弹出窗口中,您将收到消息。
获取解决方案的想法