JQuery Ajax POST не работает с MailChimp - PullRequest
9 голосов
/ 04 марта 2011

У меня есть следующий код, который я использую для отправки данных в список рассылки 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

Ответы [ 3 ]

13 голосов
/ 04 мая 2013

Существует недокументированная конечная точка, которая использует JSONP для выполнения междоменных запросов ajax.

Просто измените 'post?'на "пост-JSON?"и добавьте '& c =?'до конца стандартного URL, чтобы получить конечную точку JSONP.Это не требует предоставления ключа API на стороне клиента или создания представления на стороне сервера.

Я написал плагин jQuery, который использует этот метод, если он вообще полезен

https://github.com/scdoshi/jquery-ajaxchimp

9 голосов
/ 04 марта 2011

Основная проблема заключается в том, что jc прокомментировал ваш оригинальный пост - это просто не сработает из-за проблем с политикой того же происхождения. Firebug не так громко говорит о том, почему не удается вызвать GET, но именно поэтому он не возвращает данных. Если вы посмотрите это с помощью POST, вы увидите, что Firefox даже не звонит. Js-консоль Chrome, с другой стороны, прямо объясняет вам политику Same Origin.

В целом, это очень хорошая вещь, если только по какой-либо другой причине, кроме как она мешает вам публично опубликовать ключ API вашей учетной записи, что очень плохо. Если причина, по которой это происходит не сразу, прочитайте большое количество методов, доступных в API, а затем поймете, что все, что вам нужно для доступа к ним, - это ключ API.

Правильный способ сделать это - отправить данные POST на ваш сервер, а затем сделать запрос оттуда. Есть несколько полностью собранных примеров PHP (один, использующий даже jquery), здесь .

0 голосов
/ 04 марта 2011
e.preventDefault();
data = {
  "apikey" : "667378947", 
  "id" : "90298590285", 
  "email_address" : "test@getmoxied.net", 
  "output" : "json"
};

Может быть? Точка с запятой важна. Хехе

...