2015-09-25 6 views
7

मेलचंप एपीआई (v3.0) पर एक बड़ा अपडेट रहा है और form.submit() पर POST ग्राहकों के लिए कई jQuery प्लगइन्स पुराने हैं।मेलचंप एपीआई वी 3 jQuery अजाक्स पोस्ट सब्सक्राइबर

Managing subscribers पता चलता है निम्नलिखित JSON ऑब्जेक्ट प्रारूप:

{ 
    "email_address": "[email protected]", 
    "status": "subscribed", 
    "merge_fields": { 
     "FNAME": "Urist", 
     "LNAME": "McVankab" 
    } 
} 

और निम्नलिखित जड़ endpoint एपीआई सूचियों संसाधन के लिए:

https://<dc>.api.mailchimp.com/3.0/

v3.0 डॉक्स पढ़ने के बाद तो यहां मेरा form.submit() कोड है जो jQuery अजाक्स POST अनुरोध के साथ है:

$(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's API v3.0 docs (सूची सदस्यों का संग्रह) का लिंक है।

+0

सबसे अच्छा एक है http://stackoverflow.com/a/21491824/1821607 –

उत्तर

1

आपको 401 मिल रहा है क्योंकि आप अपनी एपीआई कुंजी में नहीं जा रहे हैं।

आप ajax कॉल कर रहे हैं के लिए निम्न जोड़ने की आवश्यकता होगी:

beforeSend: function(xhr) { xhr.setRequestHeader("Authorization", 
    "Basic " + btoa("api:" + mailchimp_api_key)); }; 

कहाँ mailchimp_api_key अपने खाते के लिए महत्वपूर्ण है। एपीआई के साथ ऑथ पर अधिक जानकारी के लिए http://kb.mailchimp.com/api/article/api-3-overview पर एक नज़र डालें।

+3

लेकिन यह भी: यदि यह क्लाइंटसाइड जेएस से है, तो यहां एक क्रॉस-साइट स्क्रिप्टिंग समस्या भी होगी। क्लाइंट पर निर्भर होने के बजाय कॉल को सर्वर के माध्यम से प्रॉक्सी किया जाना चाहिए। – TooMuchPete

+0

@TooMuchPete तो क्लाइंट के माध्यम से मेलचंप पर पोस्ट करने का कोई आसान तरीका नहीं है? एपीआई v2.0 का उपयोग कर बहुत सारे jQuery/कोणीय प्लगइन्स हैं जो ऐसा करते हैं। – Gus

+0

@ औबरेहोड्स आपके उत्तर के लिए धन्यवाद लेकिन अब मुझे 404 मिल रहा है। मैंने सही एपीआई भी जोड़ा। कोई सफलता नहीं। – Gus

-1

आपको इस तरह की पैरामीटर में अपनी एपीआई कुंजी जोड़ने की जरूरत है;

{ 
    "apikey": "your key here", 
    "email_address": "[email protected]", 
    "status": "subscribed", 
    "merge_fields": { 
     "FNAME": "Urist", 
     "LNAME": "McVankab" 
    } 
} 

फिर आपको "jsonp" से "json" में डेटाटाइप बदलने की आवश्यकता है। "जेसनपी" केवल प्राप्त होता है और POST विधि के साथ काम नहीं करेगा।

और अंतिम चीज जो आपको करने की ज़रूरत है वह है क्रॉस डोमेन स्क्रिप्टिंग की अनुमति देना;

http://enable-cors.org/server.html

2

दुर्भाग्य से यह सामने के अंत Mailchimp एपीआई के लिए अनुरोध करने के लिए संभव नहीं है।

Note MailChimp does not support client-side implementation of our API using CORS requests due to the potential security risk of exposing account API keys.

https://developer.mailchimp.com/documentation/mailchimp/guides/get-started-with-mailchimp-api-3/#authentication

+0

अच्छा, आपके संशोधित PHP समाधान की देखभाल करने की देखभाल करें? – Himmators

2

तरह से मैं यह आपके AJAX कोड का उपयोग लेकिन सभी MailChimp सामान को निकाल देते हैं और एक PHP फ़ाइल के लिए पोस्ट डेटा भेजने के लिए है ही किया। मैं इस कोड का इस्तेमाल किया:

https://github.com/actuallymentor/MailChimp-API-v3.0-PHP-cURL-example/blob/master/mc-API-connector.php

मैं बस सब कुछ बाहर छीन लिया लेकिन हिस्सा मैं एक एकल उपयोगकर्ता सदस्यता लेने के लिए की जरूरत है और यह एक आकर्षण की तरह काम किया।त्रुटि रिपोर्टिंग के लिए, आप शायद PHP पक्ष पर त्रुटियों का पता लगा सकते हैं और AJAX को HTTP स्थिति भेज सकते हैं।

संबंधित मुद्दे