2009-07-24 4 views
4

Ich habe Schwierigkeiten beim Einrichten einer einfachen HTML-Datei mit Javascript, um die Ergebnisse der YQL-Abfrage anzuzeigen.Wie verwende ich YQL zum Abrufen von Web-Ergebnissen?

Ich verstehe, wie Sie die Select-Anweisung (Beispiel: Titel, Abstract, URL von search.web wo Query = "Pizza") in der YQL-Konsole einrichten. Aber ich weiß nicht, wie ich es in der HTML-Datei anzeigen soll?

Kann jemand helfen zu erklären, wie man die Ergebnisse dieser Aussage anzeigt? Codeschnipsel würden geschätzt!

BTW, ich habe die YQL-Dokumente gelesen, aber sie sind etwas kompliziert.

Antwort

8

Die einzige Möglichkeit, YQL-Ergebnisse über clientseitiges JavaScript abzurufen, ist JSON-P (oder ein zusätzlicher Proxy). Hier ist ein Wrapper für den YQL Service:

function YQLQuery(query, callback) { 
    this.query = query; 
    this.callback = callback || function(){}; 
    this.fetch = function() { 

     if (!this.query || !this.callback) { 
      throw new Error('YQLQuery.fetch(): Parameters may be undefined'); 
     } 

     var scriptEl = document.createElement('script'), 
      uid = 'yql' + +new Date(), 
      encodedQuery = encodeURIComponent(this.query.toLowerCase()), 
      instance = this; 

     YQLQuery[uid] = function(json) { 
      instance.callback(json); 
      delete YQLQuery[uid]; 
      document.body.removeChild(scriptEl); 
     }; 

     scriptEl.src = 'http://query.yahooapis.com/v1/public/yql?q=' 
        + encodedQuery + '&format=json&callback=YQLQuery.' + uid; 
     document.body.appendChild(scriptEl); 

    }; 
} 

Verbrauch:

// Construct your query: 
var query = "select * from rss where url='somefeed.com' limit 1"; 

// Define your callback: 
var callback = function(data) { 
    var post = data.query.results.item; 
    alert(post.title); 
}; 

// Instantiate with the query: 
var firstFeedItem = new YQLQuery(query, callback); 

// If you're ready then go: 
firstFeedItem.fetch(); // Go!! 

Mehr Informationen: http://james.padolsey.com/javascript/using-yql-with-jsonp/

+0

Wie kann ich Tabellen in datatables.org mit dieser Methode verwenden!? – juanpastas

2

Hier ist ein sehr einfaches Beispiel für Sie. Ich habe es die YQL Website mit:

<html> 
    <head>  
    </head> 
    <body> 
    <script> 
     function top_stories(o){ 
     // parse through the output here: 
     var items = o.query.results.item; 
     // do whatever you want with the output here: 
     console.log(items[0].title); 
     } 
    </script> 
    <script src='http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20rss%20where%20url%3D%22http%3A%2F%2Frss.news.yahoo.com%2Frss%2Ftopstories%22&format=json&diagnostics=false&callback=top_stories'></script> 
    </body> 
</html> 

Alle es es die erste Nachricht Geschichte von Yahoo 's Titelseite bekommt