2011-03-04 12 views
9

tengo el siguiente código que estoy utilizando para enviar datos a una lista de boletín MailChimp (versión 3 del API). Cada vez que elimino el type: POST de la función, intenta publicar los datos a través de GET y envía los datos correctamente (respuesta correcta en el panel de la API de MailChimp). Al probar esto en el navegador (FF) obtengo un archivo .part con respuesta "verdadera".jQuery Ajax post no se trabaja con 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"); 
    } 
    })  
}); 
}); 

Estoy tirando de mi pelo en este caso, cualquier idea es muy apreciada.

Gracias de antemano,

JN

+1

¿No hay problemas de política del mismo origen aquí? – Yahel

+2

No debe usar el método en su pregunta: está exponiendo su clave API de MailChimp a cualquier persona que sepa cómo ver el origen de una página web. Solo debe usarlo con el código del lado del servidor. Con esta exposición, cualquiera podría teóricamente suscribir miembros a su lista, eliminarla, etc. – adamdehaven

Respuesta

8

El principal problema es lo jc ha comentado tu post original - esto simplemente no funcionará debido a cuestiones de política del mismo origen. Firebug no es tan explícito acerca de por qué falla la llamada GET, pero es por eso que no devuelve datos. Si miras eso con el POST, verás que Firefox ni siquiera hace la llamada. La consola js de Chrome, por otro lado, explica directamente la política de Same Origin para usted.

Con todo, esta es una muy buena cosa si por ninguna otra razón que le impide publicar públicamente clave de la API de su cuenta, lo que es una muy mala cosa que hacer. Si la razón por la cual no se refleja inmediatamente, lea la gran cantidad de métodos disponibles en la API y luego descubra que todo lo que necesita para acceder a ellos es esa clave API.

La forma correcta de hacer esto es para enviar datos de vuelta a su servidor, a continuación, realizar la solicitud a partir de ahí. Hay varios ejemplos PHP completamente construidos (uno usando jquery, par), here.

+0

Gracias por la explicación detallada. Me di cuenta después de que esta era la razón por la que tenía un problema con algo similar en el pasado. Gracias de nuevo! – jeffreynolte

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

Podría ser? Semicolon es importante. Jeje

+0

gracias por la información, pero lamentablemente no es bueno. :( – jeffreynolte

+0

Tal vez es necesario utilizar parámetros GET en lugar de parámetros POST. – Joseadrian

+0

como se menciona en la API MC debe ser post http://apidocs.mailchimp.com/rtfm/ – jeffreynolte

12

Hay un punto final indocumentado que utiliza JSONP hacer peticiones ajax entre dominios.

¿Quieres cambiar la publicación? a 'post-json?' y agregue '& c =?' hasta el final de la url estándar para obtener el punto final JSONP. Esto no requiere que la clave API esté expuesta en el lado del cliente, o la creación de una vista del lado del servidor.

escribí un plugin de jQuery que utiliza este método, si eso es útil en absoluto

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

Cuestiones relacionadas