2011-03-04 15 views
9

के साथ काम नहीं कर रहा है मेरे पास निम्न कोड है जिसका उपयोग मैं MailChimp न्यूजलेटर सूची (API v3) पर डेटा भेजने के लिए कर रहा हूं। प्रत्येक बार जब मैं type: POST फ़ंक्शन से हटाता हूं तो यह डेटा को GET के माध्यम से पोस्ट करने का प्रयास करता है और यह डेटा को ठीक से भेजता है (MailChimp API डैशबोर्ड में ठीक प्रतिक्रिया)। ब्राउज़र (एफएफ) में इसका परीक्षण करते समय मुझे "सत्य" प्रतिक्रिया के साथ एक .part फ़ाइल मिलती है।jQuery अजाक्स पोस्ट 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

में उपयोगी है नहीं वहाँ एक ही मूल नीति के मुद्दों यहाँ कर रहे हैं? – Yahel

+2

आपको अपने प्रश्न में विधि का उपयोग नहीं करना चाहिए - आप किसी भी व्यक्ति को अपनी MailChimp API कुंजी को उजागर कर रहे हैं जो किसी वेब पेज के स्रोत को कैसे देखना है। आपको केवल सर्वर-साइड कोड के साथ इसका उपयोग करना चाहिए। इस एक्सपोजर के साथ, कोई भी सैद्धांतिक रूप से सदस्यों को आपकी सूची में सब्सक्राइब कर सकता है, इसे हटा सकता है, आदि – adamdehaven

उत्तर

8

मुख्य मुद्दा यह है कि जेसी ने आपकी मूल पोस्ट पर टिप्पणी की - यह केवल मूल उत्पत्ति नीति के कारण काम नहीं करेगा। फायरबग इस बात के बारे में मुखर नहीं है कि जीईटी कॉल क्यों विफल रहता है, लेकिन यही कारण है कि यह कोई डेटा नहीं देता है। यदि आप इसे पोस्ट के साथ देखते हैं, तो आप देखेंगे कि फ़ायरफ़ॉक्स कॉल भी नहीं करता है। दूसरी तरफ क्रोम का जेएस कंसोल आपको वही मूल नीति बताता है।

सब कुछ, यह एक बहुत अच्छी बात है यदि किसी अन्य कारण से यह आपके खाते की एपीआई कुंजी को सार्वजनिक रूप से प्रकाशित करने से रोकता है, जो करना बहुत बुरा काम है। यदि कारण तुरंत नहीं निकलता है, तो एपीआई में उपलब्ध बड़ी संख्या में विधियों के माध्यम से पढ़ें और फिर एहसास करें कि आपको उन तक पहुंचने की ज़रूरत है, जो कि एपीआई कुंजी है।

ऐसा करने का सही तरीका है डेटा को अपने सर्वर पर वापस पोस्ट करना, फिर वहां से अनुरोध करना। कई पूरी तरह से निर्मित PHP उदाहरण हैं (एक jquery का उपयोग कर, यहां तक ​​कि), here

+0

विस्तृत स्पष्टीकरण के लिए धन्यवाद। मुझे इस तथ्य के बाद एहसास हुआ कि यही कारण है कि मुझे कुछ समस्या थी अतीत में समान। धन्यवाद फिर से! – jeffreynolte

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

हो सकता है? अर्धविराम महत्वपूर्ण है। Hehe

+0

अंतर्दृष्टि के लिए धन्यवाद लेकिन दुर्भाग्य से कोई bueno। :( – jeffreynolte

+0

शायद आपको पोस्ट पैरामीटर के बजाय जीईटी पैरामीटर का उपयोग करने की आवश्यकता है। एमसी एपीआई में उल्लिखित – Joseadrian

+0

यह पोस्ट होना चाहिए http://apidocs.mailchimp.com/rtfm/ – jeffreynolte

12

एक अनियंत्रित एंडपॉइंट है जो क्रॉस-डोमेन AJAX अनुरोध करने के लिए JSONP का उपयोग करता है।

बस 'पोस्ट' बदलें? 'पोस्ट-जेसन' के लिए और '& सी =?' जोड़ें जेएसओएनपी एंडपॉइंट प्राप्त करने के लिए मानक यूआरएल के अंत तक। इसके लिए क्लाइंट-साइड पर एपीआई कुंजी या सर्वर-साइड व्यू के निर्माण की आवश्यकता नहीं है।

मैं, इस विधि का उपयोग करता है एक jQuery प्लगइन लिखा था कि अगर सब

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

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