2012-05-07 17 views
5

Estoy tratando de convertir RSS a JSON pero cuando se utiliza la consola en Chrome me sale este errorconversión de RSS Para JSON

XMLHttpRequest no puede cargar http://www.blastcasta.com/feed-to-json.aspx?feedurl=http://www.startalkradio.net/?page_id=354. El nulo de origen no está permitido por Access-Control-Allow-Origin.

jQuery:

$(document).ready(function() { 
    var rss_url = "http://www.blastcasta.com/feed-to-json.aspx?feedurl=http://www.startalkradio.net/?page_id=354"; 

    $.ajax({ 
     type : 'GET', 
     url : rss_url, 
     succces : function(data) { 
      $.each(data.rss, function(i, item) { 
       $("#results").append('<ul>' + item.channel.item.description + '</ul>'); 

      }); 
     }, 
     dataType : 'json', 
     async : true 
    }); 

    function fetchRss(data) { 
     $.each(data.rss, function(i, item) { 
      $("#results").append('<ul>' + item.channel.item.description + '</ul>'); 

     }); 
    } 

}); 

Respuesta

9

ACTUALIZACIÓN: esta respuesta sugiere el uso de la API de Google Feed que ha quedado obsoleta. Otras opciones incluyen Superfeedr: Converting RSS to JSON

Ese error ocurre porque el archivo RSS no está en su servidor, por lo que está violando el Access-Control-Allow-Origin.

Pruebe este plugin que se utiliza para los propósitos de varios dominios con RSS:

http://jquery-howto.blogspot.com/2009/11/cross-domain-rss-to-json-converter.html

EDIT:

Biblioteca enlace de descarga:

http://code.google.com/p/lomodroid/source/browse/src/functions/jquery.jgfeed.js

Demostración en directo con twitter:

http://jsfiddle.net/oscarj24/NbDWb/

Demostración en directo con el enlace utilizado en la pregunta:

http://jsfiddle.net/oscarj24/NbDWb/3/

Esto convertirá RSS a JSON

<script src="jquery.js"></script> 
<script src="jquery.jgfeed.js"></script> 
<script> 
$.jGFeed('http://twitter.com/statuses/user_timeline/26767000.rss', 
    function(feeds){ 
    // Check for errors 
    if(!feeds){ 
     // there was an error 
     return false; 
    } 
    // do whatever you want with feeds here 
    for(var i=0; i<feeds.entries.length; i++){ 
     var entry = feeds.entries[i]; 
     // Entry title 
     entry.title; 
    } 
    }, 10); 
</script> 
+0

No puedo encontrar la fuente para este complemento –

+0

@atbyrd mira mi edición, he agregado el enlace –

+0

Gracias por la ayuda –

1

Bueno, básicamente es muy simple. No puede cargar esa URL porque JavaScript/su navegador no lo permite. (Debido a la misma política de origen).

Tendrá que hacerlo con un lenguaje de script (como PHP) o algo así, pero no por JavaScript

menos que tenga acceso a la fuente (localización RSS) y puede añadir cabeceras para permitir el origen

0

El Google Feeds API puede hacer esto fácilmente Solo use el formato de resultado google.feeds.Feed.JSON_FORMAT. Aquí están the docs para eso también.

+1

Ten cuidado, la API de Google Feeds se está cerrando. –

+0

Ahora está completamente apagado – Shmuel