2011-03-04 7 views
9

MailChimp 뉴스 레터 목록 (API v3)으로 데이터를 보내는 데 사용하는 다음 코드가 있습니다. 함수에서 type: POST을 제거 할 때마다 GET을 통해 데이터를 게시하려고 시도하고 데이터를 올바르게 보냅니다 (MailChimp API 대시 보드에서 ok 응답). 브라우저 (FF)에서 이것을 테스트 할 때 "true"응답을 가진 .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"); 
    } 
    })  
}); 
}); 

임이 내 머리카락을 꺼내, 어떤 통찰력을 크게 주시면 감사하겠습니다. 사전에

감사합니다,

+1

에 유용 경우

나는 동일 출처 정책 문제는 여기가 아닌가,이 방법을 사용하는 jQuery 플러그인을 작성? – Yahel

+2

귀하의 질문에이 방법을 사용하면 안됩니다. MailChimp API 키를 웹 페이지의 소스를 보는 방법을 알고있는 모든 사람에게 공개하고 있습니다. 서버 측 코드에서만 사용해야합니다. 이 노출로 인해 누구나 이론적으로 구성원을 회원님의 목록에 등록하고 삭제할 수 있습니다. – adamdehaven

답변

8

jc가 원본 게시물에 댓글을 달았습니다.이 문제는 동일 출처 정책 문제로 인해 단순히 작동하지 않습니다. Firebug는 왜 GET 호출이 실패했는지에 대한 음성이 아니지만 그 이유는 데이터를 반환하지 않기 때문입니다. POST를 통해이를 지켜 보면 파이어 폭스가 전화를 걸지 않는다는 것을 알 수있다. 반면 Chrome의 js 콘솔에서는 동일한 출처 정책을 직접 설명합니다.

전혀 다른 이유로 인해 계정의 API 키를 공개적으로 게시하지 못하는 경우 매우 유용합니다. 이는 매우 나쁜 일입니다. 이유가 즉시 침몰하지 않는 경우 API에서 사용할 수있는 많은 메소드를 읽은 다음 액세스해야하는 모든 것이 해당 API 키임을 인식하십시오.

이 작업을 수행하는 올바른 방법은 데이터를 서버로 POST 한 다음 해당 서버에서 요청하는 것입니다. 몇 가지 완벽하게 구현 된 PHP 예제 (하나는 jquery, even을 사용), here입니다.

+0

자세한 설명을 해주셔서 감사합니다. 이것이 제가 문제가있는 바로 그 이유 였음을 깨달았습니다. 과거와 비슷합니다. 다시 한 번 감사드립니다! – jeffreynolte

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

될 수

JN? 세미콜론이 중요합니다. Hehe

+0

통찰력에 감사하지만 불행히도 bueno는 없습니다. : – jeffreynolte

+0

POST 매개 변수 대신 GET 매개 변수를 사용해야 할 수도 있습니다. – Joseadrian

+0

MC API에 언급 된대로 POST해야합니다. http://apidocs.mailchimp.com/rtfm/ – jeffreynolte

12

크로스 도메인 아약스 요청을 수행하기 위해 JSONP를 사용하는 문서화되지 않은 엔드 포인트가 있습니다.

'게시 하시겠습니까?' '포스트 - 존슨'? '& c =?'를 추가하십시오. JSONP 엔드 포인트를 가져 오는 표준 URL의 끝에. API 키가 클라이언트 쪽에서 공개되거나 서버 쪽보기가 만들어 질 필요는 없습니다. 그 모든

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

관련 문제