2011-03-04 4 views
9

У меня есть следующий код, который я использую для отправки данных в список рассылки MailChimp (API v3). Каждый раз, когда я удаляю type: POST из функции, которую он пытается отправить данные через GET, он правильно отправляет данные (ok ответ в панели управления MailChimp API). При тестировании этого в браузере (FF) я получаю файл .part с «истинным» ответом.jQuery Ajax POST не работает с MailChimp

$(function(){ 
    $("a#test").click(function(e){ 
     e.preventDefault() 
     data = { 
     "apikey" : "667378947", 
     "id" : "90298590285", 
     "email_address" : "[email protected]", 
     "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"); 
    } 
    })  
}); 
}); 

Im потянув мои волосы на этом, любое понимание очень ценится.

Спасибо заранее,

JN

+1

не Есть Одинаковые вопросы Происхождение политики здесь? – Yahel

+2

Вы не должны использовать метод в своем вопросе - вы подвергаете свой ключ API MailChimp всем, кто знает, как просматривать источник веб-страницы. Вы должны использовать его только с серверным кодом. С этим разоблачением любой может теоретически подписать членов в ваш список, удалить его и т. Д. – adamdehaven

ответ

8

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

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

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

+0

Спасибо за подробное объяснение. Я понял после того, что именно по этой причине у меня была проблема с чем-то похожий в прошлом. Еще раз спасибо! – jeffreynolte

-2
e.preventDefault(); 
data = { 
    "apikey" : "667378947", 
    "id" : "90298590285", 
    "email_address" : "[email protected]", 
    "output" : "json" 
}; 

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

+0

спасибо за понимание, но, к сожалению, нет буено. :( – jeffreynolte

+0

Возможно, вам нужно использовать параметры GET вместо параметров POST. – Joseadrian

+0

как указано в MC API, это должно быть POST http://apidocs.mailchimp.com/rtfm/ – jeffreynolte

12

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

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

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

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

Смежные вопросы