jQuery Ajax POST ne fonctionne pas avec MailChimp
j'ai le code suivant que j'utilise pour envoyer des données à une liste de Newsletter MailChimp (API v3). Chaque fois que je supprime le type: POST
de la fonction, il tente de poster les données via GET et il envoie les données correctement (ok response in MailChimp API dashboard). Lors du test dans le navigateur (FF) j'obtiens un .le fichier de pièce avec de la "vraie" réponse.
$(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");
}
})
});
});
je tire mes cheveux sur celui-ci, toute perspicacité est grandement appréciée.
Merci d'avance,
JN
3 réponses
la question principale est ce que jc a commenté sur votre post original - cela ne fonctionnera tout simplement pas en raison des mêmes questions de politique D'origine. Firebug n'est pas aussi vocal sur les raisons pour lesquelles L'appel GET échoue, mais c'est pourquoi il ne renvoie pas de données. Si vous regardez ça avec le POST, vous verrez que Firefox ne fait même pas l'appel. Par contre, la console JS de Chrome vous explique directement la même Politique D'origine.
tout compte fait, c'est une très bonne chose si pour aucune autre raison qu'elle vous empêche de publier publiquement la clé API de votre compte, ce qui est une très mauvaise chose à faire. Si la raison pour laquelle il n'est pas immédiatement intégré, allez lire le grand nombre de méthodes disponibles dans L'API et ensuite se rendre compte que tout ce dont vous avez besoin pour y accéder est cette clé API.
la bonne façon de procéder est de renvoyer les données à votre serveur, puis de faire la demande à partir de là. Il y a plusieurs exemples PHP entièrement construits (l'un utilisant jquery, even), ici .
il y a un paramètre non documenté qui utilise JSONP pour faire des requêtes ajax de domaine croisé.
juste changer de poste?"à la" post-json?"et d'ajouter" '&c=?'à la fin de l'url standard pour obtenir le point final JSONP. Cela n'exige pas que la clé API soit exposée du côté client, ou la création d'une vue du côté serveur.
j'ai écrit un plugin jQuery qui utilise cette méthode, si c'est utile du tout
e.preventDefault();
data = {
"apikey" : "667378947",
"id" : "90298590285",
"email_address" : "test@getmoxied.net",
"output" : "json"
};
pourrait être? Point-virgule est importante. Hehe