2010-03-22 4 views
3

Je me suis arraché les cheveux en essayant d'utiliser jQuery.get() pour récupérer mon flux RSS généré dynamiquement et je n'ai que des problèmes, c'est mon flux RSS le mauvais format? Si oui, puis-je le convertir au format correct en utilisant javascript?Problèmes lors de la lecture du flux RSS avec jQuery.get()

Voici mon alimentation: http://dev.chriscurddesign.co.uk/burns/p/rc_rss.php?rcf_id=0

Voici mon code:

function get_rss_feed() { 

     $(".content").empty(); 

     $.get("http://dev.chriscurddesign.co.uk/burns/p/rc_rss.php?rcf_id=0", function(d) { 

      var i = 0; 
      $(d).find('item').each(function() { 

       var $item = $(this); 
       var title = $item.find('title').text(); 
       var link = $item.find('link').text(); 
       var location = $item.find('location').text(); 
       var pubDate = $item.find('pubDate').text(); 

       var html = '<div class="entry"><a href="' + link + '" target="_blank">' + title + '</a></div>'; 

       $('.content').append(html); 
       i++; 
      }); 

     }); 
}; 

Toute entrée serait grandement apprécié !! Merci

+0

Votre XML valider? E.g .: http://www.validome.org/xml/validate/ –

+0

Veuillez ne pas tenir compte de mon commentaire. Cela valide. –

Répondre

5

J'ai essayé ceci dans IE et cela a fonctionné bien.


$(document).ready(function() { 
      $.get('http://dev.chriscurddesign.co.uk/burns/p/rc_rss.php?rcf_id=0', 
        'xml' , function(data) { 
       alert(data); 
      }); 
     }); 

Ceci ne fonctionnera pas dans d'autres navigateurs en raison de problèmes de script entre sites. Le code ci-dessus ne fonctionnera que si la page dans laquelle il réside est dans le même domaine. Donc, vous avez beaucoup d'options dont aucune n'est standard cependant. Le mieux est de faire un appel ajax à une URL de votre domaine, puis appelez l'URL de flux à partir de là, c'est-à-dire; du côté serveur. Pour plus d'informations, voir https://stackoverflow.com/search?q=calling+webservice+from+another+domain+using+jquery

+0

Super, merci pour la réponse, je vais y aller et voir si je peut le faire fonctionner, je posterai mes conclusions! – bbeckford

+0

Je peux confirmer que le code fonctionne si vous supprimez la partie "http://dev.chriscurddesign.co.uk/" (protocole + domaine). –

+0

Merci pokrate, ça a fait l'affaire! J'utilise maintenant un proxy php pour saisir le fichier rss, puis jquery pour le traiter. Je vais mettre le code complet dans une nouvelle réponse. – bbeckford

0

Utilisez simplement jFeed à la place, cela vous simplifiera le code.

+0

J'ai essayé et j'ai toujours le même problème, mon flux ne va pas traiter! – bbeckford

+0

cela résout-il les problèmes de script intersite? http://stackoverflow.com/search?q=calling+webservice+from+autre+domaine+utilisation+jquery – pokrate

+0

@pokrate non, j'aurais pu ** supposer ** que c'est son problème, mais le seuil de ma recommandation subsiste; sa meilleure utilisation utilise jFeed (une fois qu'il aura corrigé le vrai problème) –

1

Merci à pokrate pour avoir fait remarquer qu'il s'agissait d'un problème inter-domaines. Pour référence future, j'utilise un proxy PHP maintenant pour saisir le fichier rss, puis jquery pour le traiter.

Voici le proxy (vous avez besoin pelotonner activée en php):

<?php 
    $session = curl_init($_GET['url']); 
    curl_setopt($session, CURLOPT_HEADER, false); 
    curl_setopt($session, CURLOPT_RETURNTRANSFER, true); 
    $xml = curl_exec($session); 
    header("Content-Type: text/xml");appropriately 
    echo $xml; 
    curl_close($session); 
?> 

Et voici mon nouveau javascript:

function get_rss_feed() { 

    $(".content").empty(); 

    var feed = "http://dev.chriscurddesign.co.uk/burns/p/rc_rss.php?rcf_id=0"; 

    $.get("feedproxy.php?url=" + feed, function(d) { 

     $(d).find('item').each(function() { 

      var $item = $(this); 
      var title = $item.find('title').text(); 
      var link = $item.find('link').text(); 

      var html = '<div class="entry"><a href="' + link + '" target="_blank">' + title + '</a></div>'; 

      $('.content').append(html); 
     }); 

    }); 
}; 

Me = Happy Bunny :)

Questions connexes