2015-07-07 9 views
12

Sto cercando di estrarre i titoli e le descrizioni dal feed RSS MailChimp utilizzando jQuery.Recupera elementi dall'archivio Mailchimp RSS

sto provando con:

$.ajax({ 
    type: 'GET', 
    url: 'http://us10.campaign-archive1.com/feed?u=21a65076da97205b5e5ff33e6&id=cc8bfc765e', 
    crossDomain: true, 
    dataType: 'jsonp', 
    success: function (xml) { 
     $(xml).find("item").each(function() { 
      var title = $(this).find("title").text(); 
      var description = $(this).find("description").text(); 
      var linkUrl = $(this).find("link_url").text(); 
      var link = "<a href='" + linkUrl + "' target='_blank'>Read More<a>"; 
      $('#feedContainer').append('<article><h3>' + title + '</h3><p>' + description + link + '</p>'); 
     }); 
    } 
}); 

ma ho l'errore:

Uncaught SyntaxError: Unexpected token < on 
http://us10.campaign-archive1.com/feed?u=21a65076da97205b5e5ff33e6&id=cc8bfc765e&callback=jQuery214010618008393794298_1436280190025&_=1436280190026 

Se non è possibile attraverso jQuery, c'è un altro metodo? Ho provato con Yahoo Developer Console ma robots.txt non consente l'accesso.

Sembra che mailchimp non consenta l'accesso che non proviene dai browser, ho cercato di arricciare l'URL e ottengo un 404 non trovato.

risposta

2

Uncaught SyntaxError: Unexpected token < on http://us10.campaign-archive1.com/feed?u=21a65076da97205b5e5ff33e6&id=cc8bfc765e&callback=jQuery214010618008393794298_1436280190025&_=1436280190026

L'errore precedente è causato dal fatto che JSONP richiede che i dati restituiti siano validi JSON/javascript, che XML non è.

Sfortunatamente JSONP è necessario nel tuo caso in quanto CORS non è abilitato su questo server specifico. (vedi CORS for Apache)

Il risultato è che non è possibile utilizzare jQuery solo se i dati restituiti possono essere modificati in JSON.

Ho appena provato curl e sembra funzionare correttamente, nessun errore 404 per me, forse è necessario utilizzare un proxy? E assicurati di citare l'url, dato che il personaggio & è gestito specialmente in una shell.

curl 'http://us10.campaign-archive1.com/feed?u=21a65076da97205b5e5ff33e6&id=cc8bfc765e' 

E se avete intenzione di usare curl, non ci sarebbe più di una possibilità per analizzare XML, come xmllint, vedere How to parse XML using shellscript?

Ecco un esempio utilizzando xmllint:

xmllint --nocdata --xpath '//item[1]/title/text()' <(curl -s \ 
    'http://us10.campaign-archive1.com/feed?u=21a65076da97205b5e5ff33e6&id=cc8bfc765e') 

Stampa il primo titolo:

AVVIO ANNO SCOLASTICO 2015/2016