Mailchimp API(v3.0)に大きな更新があり、form.submit()
のサブスクライバーをPOST
するために、jQueryプラグインの多くが古くなっています。
V3.0のドキュメントを読んだ後:
サブスクライバーの管理 は、次のJSONオブジェクト形式を提案します。
_{
"email_address": "[email protected]",
"status": "subscribed",
"merge_fields": {
"FNAME": "Urist",
"LNAME": "McVankab"
}
}
_
そして、APIリストリソースの次のルートエンドポイント:
_https://<dc>.api.mailchimp.com/3.0/
_
これが、jQuery Ajax POST
リクエストを使用したform.submit()
コードです。
_$(document).ready(function(){
var mcForm = $('#mailchimpForm');
var mailchimp = {};
mailchimp.dc='us5';
mailchimp.id='xxxxxxxx';
var url = '//' + mailchimp.dc + '.api.mailchimp.com/3.0/lists/' + mailchimp.id + '/members/';
function beginMailchimpPost(data){
var params = JSON.stringify(data);
$.ajax({
url: url,
method: 'POST',
data: params,
dataType: 'jsonp',
contentType: 'application/json; charset=utf-8',
error: function(res, text){
console.log('Err', res);
},
success: function(res){
console.log('Success', res);
}
});
}
});
_
これはJSON.stringify(data)
オブジェクトです。
_{"email_address":"[email protected]","status":"subscribed","merge_fields":{"FNAME":"Name","LNAME":"Last name"}}
_
そして、次のエラーが発生します。
_GET http://... 401 (Unauthorized)
Err Object {readyState: 4, status: 404, statusText: "error"}
_
何が悪いのでしょうか?
MailchimpのAPI v3.0ドキュメント (リストメンバーコレクション)へのリンクは次のとおりです。
私が行った方法は、AJAXコードを使用しますが、MailChimpのものをすべて取り除き、投稿データをPHPファイルに送信します。このコードを使用しました:
1人のユーザーをサブスクライブするために必要な部分以外はすべて削除しただけで、魅力のように機能しました。エラー報告の場合、おそらくPHP側でエラーを検出し、HTTPステータスをAJAXに送信できます。
残念ながら、フロントエンドのMailchimpAPIをリクエストすることはできません。
注MailChimpは、アカウントAPIキーを公開する潜在的なセキュリティリスクのため、CORSリクエストを使用したAPIのクライアント側実装をサポートしていません。
APIキーを渡していないため、401を取得しています。
あなたはあなたがajax呼び出しであることに以下を追加する必要があります:
beforeSend: function(xhr) { xhr.setRequestHeader("Authorization",
"Basic " + btoa("api:" + mailchimp_api_key)); };
Mailchimp_api_keyがアカウントのキーです。 APIを使用した認証の詳細については、 http://kb.mailchimp.com/api/article/api-3-overview をご覧ください。