2009-03-29 10 views
2

J'essaye d'analyser les données d'un feed de craigslist rss.craigslist flux rss

C'est l'URL du flux - http://www.craigslist.org/about/best/all/index.rss

J'utilise jfeed et mon code est donné ci-dessous

jQuery(function() { 

    jQuery.getFeed({ 
     url: 'proxy.php?url=http://www.craigslist.org/about/best/all/index.rss', 
     success: function(feed) {   
      jQuery('#result').append('<h2>' 
      + feed.title 
      + '</h2>');         

     }  
    }); 
}); 

Cependant, je ne suis pas le titre d'alimentation affiché ou toute autre propriété du alimentation. Si j'essaie juste d'imprimer le flux à l'écran, j'obtiens 'Object Object' ce qui signifie qu'il renvoie correctement le flux.

Quelqu'un sait-il ce que je manque?

+0

Qu'est-ce qui se passe lorsque vous utilisez « console.log » pour vous connecter l'objet à Firebug? – bhollis

+0

J'ai vérifié et il montre la description, le titre, le lien comme étant vide. Si j'ouvre l'url craigslist directement en utilisant un navigateur web et voir la source de la page, je peux voir les valeurs pour le titre, le lien, la description, etc –

+0

exemple-proxy.html de jfeed fonctionne ici w/http: //www.craigslist. org/about/best/all/index.rss. prend un certain temps à charger, mais alors il est là, avec le titre et toutes les autres propriétés. –

Répondre

3

Premièrement: Vous ne pouvez pas extraire des données d'un autre domaine car la politique crossdomain. Je ne sais pas sur jfeed mais dans mes projets j'ai trouvé cette solution. Avec cette fonction simple, vous pouvez économiser de la bande passante et du code.

Exemple de travail

http://intervisual.de/stackoverflow/fetchxml/index.html

proxy.php (src: http://jquery-howto.blogspot.com/2009/04/cross-domain-ajax-querying-with-jquery.html)

<?php 
// Set your return content type 
header('Content-type: application/xml'); 

// Website url to open 
$daurl = 'http://www.craigslist.org/about/best/all/index.rss'; 

// Get that website's content 
$handle = fopen($daurl, "r"); 

// If there is something, read and return 
if ($handle) { 
    while (!feof($handle)) { 
     $buffer = fgets($handle, 4096); 
     echo $buffer; 
    } 
    fclose($handle); 
} 
?> 

jQuery

$.ajax({ 
    type: "GET", 
    url: "proxy.php", 
    dataType: "xml", 
    success: parseXml 
}); 

function parseXml(xml) { 
    console.log(xml); 
    $(xml).find("item").each(function() { 
     var content = $(this).find("title").text() 
     $("#news_list").append('<li>' + content +'</li>'); 
    }); 
} 

HTML

<div id="news_list"></div> 
1

Sinon, vous pouvez utiliser un autre service pour lire le flux RSS et le convertir en JSON, ce qui est extrêmement utile si vous n'avez pas accès à tout environnement côté serveur. Pour ce faire, j'utilise habituellement YQL, mais il y a certainement d'autres services là-bas.

Voici un exemple de travail en utilisant Craigslist avec la source: http://jsfiddle.net/soparrissays/NFSaq/2/